Element#

Element.attributes#

Właściwość attributes zwraca mapę nazwanych atrybutów, która odpowiada uporządkowanej liście atrybutów w danym elemencie. Jeśli element nie posiada żadnych atrybutów to mamy do czynienia z pustą mapą nazwanych atrybutów. Właściwość jest tylko do odczytu.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var map = element.attributes;

gdzie poszczególne człony oznaczają:

Elementami (nie mylić z węzłami elementowymi) w mapie nazwanych atrybutówatrybuty, czyli obiekty implementujące interfejs Attr, które najprościej wydobyć za pomocą indeksowego odwołania:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var attr = element.attributes[index];

gdzie poszczególne człony oznaczają:

Więcej szczegółów związanych z elementami, ich potencjalnymi atrybutami oraz spoiwem w postaci mapy nazwanych atrybutów umieściłem w zbiorczym dziale "Podstawy - Elementy i atrybuty".

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	var html = document.documentElement; // referencja do elementu HTML
	html.setAttributeNS("www.test.com", "p:AAA", "Test"); // ustawiamy nowy atrybut
	var attr = html.attributes; // pobieramy listę atrybutów

	document.write("Ustawiamy własny atrybut dla elementu HTML:");
	document.write("<br>");
	document.write("html.setAttributeNS('www.test.com', 'p:AAA', 'Test');");

	document.write("<br><br>");

	document.write("Pobieramy listę atrybutów elementu HTML:");
	document.write("<br>");
	document.write("var attr = html.attributes: " + attr); // [object NamedNodeMap]
	document.write("<br>");
	document.write("attr.length: " + attr.length); // 1

	document.write("<br><br>");

	document.write("Odczytujemy wartość pierwszego atrybutu z listy:");
	document.write("<br>");
	document.write("attr[0].value: " + attr[0].value); // Test

	document.write("<br><br>");

	document.write("Dodajemy nowy atrybut i odczytujemy dane z utworzonej wcześniej listy atrybutów:");
	document.write("<br>");
	document.write("html.id = 'Nowa wartość';");
	html.id = 'Nowa wartość';
	document.write("<br>");
	document.write("attr: " + attr); // [object NamedNodeMap]
	document.write("<br>");
	document.write("attr.length: " + attr.length); // 2
	document.write("<br>");
	document.write("attr[1].value: " + attr[1].value); // Nowa wartość

	document.write("<br><br>");

	document.write(document.attributes); // undefined (Firefox, Chrome), null (pozostałe przeglądarki) - błędne działanie

</script>

Właściwość attributes dla węzła typu Element pojawia się dopiero w specyfikacji DOM4. W starszych wersjach DOM właściwość była definiowana dla dowolnego węzła, ale obecnie została całkowicie usunięta z interfejsu Node.

Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują właściwość attributes zgodnie z najnowszymi wymaganiami specyfikacji DOM4, pozostałe programy implementują wcześniejsze wytyczne (szczegóły).

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Element : Node {
	[SameObject] readonly attribute NamedNodeMap attributes;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Element (H1) Element.attributes (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)