Element#

Element.hasAttributes()#

Metoda hasAttributes() zwraca boolowską wartość true jeśli dany element posiada jakiekolwiek atrybuty, w przeciwnym razie zwrócona zostanie wartość false.

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 boolean = element.hasAttributes();

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody hasAttributes() nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Zwróć boolowską wartość false jeśli lista atrybutów w obiekcie kontekstu jest pusta, w przeciwnym razie zwróć boolowską wartość false.

Prosty przykład:

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

<head id="el">

	<script>

		var html = document.documentElement;
		var head = html.firstElementChild;

		document.write(html.hasAttributes()); // false (dla HTML)
		document.write("<br>");
		document.write(head.hasAttributes()); // true (dla HEAD)

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

		var text = head.firstChild;

		// Testujemy dziedziczenie z Node (którego nie powinno być)
		document.write(text);
		document.write("<br>");
		document.write(text.hasAttributes); // bez dziedziczenia: undefined (Firefox, Chrome), przy dziedziczeniu:
											//function hasAttributes() { [native code] } - pozostałe przeglądarki (błędnie)

	</script>

</head>

<body>
</body>

</html>

Metoda hasAttributes() może być przydatna w warunkach logicznych, kiedy dalsze fragmenty kodu będą zależne od stanu posiadania jakichkolwiek atrybutów przez dany element. Alternatywnym rozwiązaniem będzie właściwość Element.attributes, która zwróci mapę nazwanych atrybutów ze wszystkimi atrybutami danego elementu (ich liczba będzie zapisana we właściwości NamedNodeMap.length).

Prosty przykład:

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

<head id="el">

	<script>

		var head = document.documentElement.firstElementChild;

		if (head.hasAttributes()){
			document.write("Są atrybuty w HEAD - detekcja poprzez Element.hasAttributes()");
		}

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

		if (head.attributes.length){
			document.write("Są atrybuty w HEAD - detekcja poprzez Element.attributes.length");
		}

	</script>

</head>

<body>
</body>

</html>

Metoda hasAttributes() dla węzła typu Element pojawia się dopiero w specyfikacji DOM4. W starszych wersjach DOM metoda 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ą metodę hasAttributes() 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 {
	boolean hasAttributes();
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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