2010-05-03 19 views
13

Wie kann ich überprüfen, ob 2 Dom-Elemente gleich sind?Überprüfung der Gleichheit von 2 DOM-Elementen

Formular Beispiel

var element1 = document.getElementById("abc"); 
var element2 = document.getElementById("abc"); 

Nun, wie soll ich chekc, dass diese zwei Elemente gleich sind?

Dank

+0

Fragen Sie nach Referenzgleichheit der Wertgleichheit? Es kann zwei DOM-Elemente auf einer Seite geben, die gleich sind, da sie die gleiche ID, die gleichen Attribute und den gleichen Inhalt haben. Oder zwei verschiedene Referenzen (element1 und element2) beziehen sich möglicherweise auf denselben DOM-Knoten. –

Antwort

-23

Wenn die Ids die gleichen sind, können sie nicht anders sein. Wenn die IDs unterschiedlich sind, können sie nicht identisch sein. Wenn Sie also beide Ids haben, können Sie einfach die beiden Ids vergleichen.

+4

Das Attribut 'id' zweier Elemente sollte nicht identisch sein. Aber Leute machen seltsame Dinge .. – bobobobo

+7

Das ist falsch, eine beliebige Anzahl von Elementen kann die gleiche ID haben, es ist NICHT garantiert, dass sie eindeutig sind. –

+0

Ich lag eigentlich falsch. Tim solltest du die Antwort des Bobobobo besser als akzeptiert ansehen. –

26

element1 und element2 sind Verweise auf den gleichen Platz in der DOM tree. Überprüfen Sie einfach

if(element1 == element2) 
{ 
    alert("same") ; 
} 
+1

Ist das korrekt? Verwenden DOM-Elemente immer dasselbe Javascript-Objekt, unabhängig davon, wie sie aus dem Dokument abgerufen werden? –

+5

Ja. Jedes Element ist ein Objekt in einem Baum und 'element1',' element2' sind lediglich Referenzen auf diese Objekte im Baum. Wenn sich die beiden Variablen auf dasselbe Objekt beziehen, sind die Referenzen gleich. – bobobobo

+0

Ich weiß, dass sie Elemente in einem Baum sind, ich fragte mehr, ob die Interna von 'getElementById()' etwas wie 'return new DomElement (...)' enthalten, so dass zurückgegebene Elemente immer neue Instanzen sind, obwohl sie die gleiche Info Aber ich denke, Sie haben Recht, Browser scheinen die DOM JS-Objekte größtenteils wiederzuverwenden. –

0

Eine Möglichkeit wäre die Verwendung von .outerHTML. Es erzeugt den HTML-Code des Elements, einschließlich sich selbst (nicht nur den Inhalt wie .innerHTML).

Verwandte Themen