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:
var boolean = element.hasAttributes();
gdzie poszczególne człony oznaczają:
- boolean - boolowskie
true
lubfalse
. - element - węzeł będący obiektem kontekstu.
Algorytm wywołania metody hasAttributes()
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć boolowską wartość
false
jeśli lista atrybutów w obiekcie kontekstu jest pusta, w przeciwnym razie zwróć boolowską wartośćfalse
.
Prosty przykład:
<!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:
<!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#
interface Element : Node { boolean hasAttributes(); }