Node#

Node.isEqualNode()#

Metoda isEqualNode() zwraca boolowską wartość true jeśli przekazany węzeł jest zgodny z danym węzłem, w przeciwnym razie zwrócona zostanie wartość false.

Zgodności nie należy mylić z równoważnością między węzłami (obiektami JS). Równoważność występuje tylko wtedy, kiedy mamy do czynienia z tym samym obiektem, lub kiedy zmienne referencyjne wskazują na ten sam obiekt w pamięci. Jeśli występuje równoważność to automatycznie spełniona jest także zgodność, chociaż sytuacja odwrotna nie musi być zachowana.

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 equal = node.isEqualNode(other);

gdzie poszczególne człony oznaczają:

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

  1. Zwróć boolowską wartość true jeśli other nie jest wartością null i obiekt kontekstu spełnia warunki zgodności z other, w przeciwnym razie zwróć boolowską wartość false.

Analizując dokładnie wszystkie powiązane z metodą isEqualNode() algorytmy można zauważyć, że zgodność między dwoma węzłami jest ściśle uzależniona od ich rodzaju, ponieważ dla każdego z nich przewidziano osobne kryteria zgodności.

Jeśli chcielibyśmy w wyrażeniu warunkowym sprawdzić, czy dany węzeł jest równoważny z wartością sprawdzaną (czyli samym sobą), to wystarczy użyć jeden z operatorów porównania: == lub ===. Co prawda istnieje dedykowana metoda Node.isSameNode(), ale bezpośrednie skorzystanie z operatorów JS-a jest szybsze i wygodniejsze.

Prosty przykład:

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

	document.write(document.isEqualNode(document)); // true - węzeł zgodny i równoważny z samym sobą
	document.write("<br>");

	var node1 = document.createElement("p");
	var node2 = document.createElement("p");

	document.write(node1.isEqualNode(node2)); // true - węzły zgodne
	document.write("<br>");
	document.write(node1 == node2); // false - węzły zgodne, ale nierównoważne
	document.write("<br>");

	node2.id = "akapit2"; // ustawiamy atrybut ID

	document.write(node1.isEqualNode(node2)); // false - brak zgodności i równoważności
	document.write("<br>");
	document.write(node1.isEqualNode(null)); // false - brak zgodności i równoważności

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

</script>

Na chwilę obecną wszystkie aktualne przeglądarki obsługują metodę isEqualNode() zgodnie z wymaganiami specyfikacji DOM4, z wyjątkiem IE11, która działa według starszego podejścia i nie pozwala przekazywać do metody wartości null.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Node : EventTarget {
	boolean isEqualNode(Node? other);
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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