2010-09-06 11 views
44

Non è un problema trovare un elemento per posizione e la posizione di un elemento in Javascript. Ma c'è un modo generale per confrontarli?C'è un modo per verificare se due elementi DOM sono uguali?

L'unico modo in cui potrei pensare è confrontare id o nomi di classe, ma non tutti gli elementi hanno id o nomi di classe.

+1

Cosa significa "uguale" nel tuo contesto, quindi, se non lo stesso ID? È lo stesso tipo di elemento? O lo stesso contenuto? Per favore espandi un po 'la tua domanda ... – peirix

+1

Confronta cosa ne dici di loro? Altezza, colore di sfondo, z-index? Cosa stai cercando di confrontare. – Robert

+0

Cosa intendi per "uguale"? Intendi quando due variabili puntano allo stesso elemento? O intendi che i due elementi "sembrano uguali". Se è così, è necessario definire cosa significa "sembrare uguale": fa lo stesso conteggio delle posizioni xy, ha lo stesso conteggio della trasparenza/opacità, stesso contenuto del testo? – slebetman

risposta

38

Se si desidera confrontare due puntatori di elementi per essere lo stesso elemento, utilizzare semplicemente l'operatore di confronto. Questo può essere facilmente dimostrato perché

document.body === document.body 

Per esempio, se ho avuto in qualche modo i riferimenti a due elementi non sapevo:

if (element1 === element2) ... 
+0

Grazie per il suggerimento! –

+0

@ www139 - perché è consigliabile? Si prega di fornire prove – vsync

+0

@vsync dare un'occhiata a questa domanda http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons e http: //stackoverflow.com/questions/10679762/how-to-compare-two-html-elements – www139

30

nei browser moderni ci sono due metodi per confrontare i nodi.

var a = document.createElement('div'); 
var b = document.createElement('div'); 
b.isEqualNode(a); // true 

ma

b.isSameNode(a); //false 

E per quanto riguarda IE, è elementi DOM hanno attributo non-Stanard, uniqueID. Ma non riesco a immaginare che possa essere utile in questo caso, poiché sì, in realtà puoi confrontare due indicatori.

+12

MDN suggerisce che questo è ammortizzato e usare == o === come nella risposta di Delan. https://developer.mozilla.org/en-US/docs/DOM/Node.isSameNode – Andru

+0

@Andru, oh, tutto cambia abbastanza velocemente negli ultimi anni :))) – shabunc

+2

la funzione 'isSameNode' è deprecata, dovresti usare' isEqualNode' invece. Vedi https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode – idFlood

Problemi correlati