2010-05-03 30 views
13

¿Cómo puedo verificar si 2 elementos Dom son iguales?Comprobando la igualdad de 2 elementos DOM

ejemplo Formulario

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

Ahora, ¿cómo debo chekc que estos 2 elementos son iguales?

Gracias

+0

¿Preguntas sobre la igualdad de igualdad de valor de referencia? Puede haber dos elementos DOM en una página que sean iguales en el sentido de que tienen el mismo ID, los mismos atributos y los mismos contenidos. O bien, dos referencias diferentes (elemento1 y elemento2) pueden estar refiriéndose al mismo nodo DOM. –

Respuesta

-23

Si los Id. Son iguales, no pueden ser diferentes. Si los ID son diferentes, no pueden ser lo mismo. Entonces, si tiene ambos Ids, puede comparar los dos Ids.

+4

El atributo 'id' de dos elementos __ no debería ser el mismo. Pero la gente hace cosas raras ... – bobobobo

+7

Esto es incorrecto, cualquier cantidad de elementos puede tener la misma identificación, NO se garantiza que sea única. –

+0

Estaba realmente equivocado. Tim, deberías marcar mejor la respuesta del bobobobo como la aceptada. –

26

element1 y element2 aparecen referencias al mismo lugar en el DOM tree. Simplemente marque

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

¿Es esto correcto? ¿Los elementos DOM siempre usarán el mismo objeto Javascript sin importar cómo se recuperan del documento? –

+5

Sí. Cada elemento es un objeto en un árbol, y 'element1',' element2' son simplemente referencias a esos objetos en el árbol. Si las dos variables se refieren al mismo objeto, entonces las referencias serán iguales. – bobobobo

+0

Sé que son elementos en un árbol, me preguntaba más si las partes internas de 'getElementById()' incluyen algo así como 'return new DomElement (...)' de modo que los elementos devueltos siempre sean instancias nuevas, aunque pueden contener el misma información. Pero creo que tienes razón, los navegadores en su mayoría parecen reutilizar objetos DOM JS. –

0

Una posibilidad sería usar .outerHTML. Generará el HTML del elemento, incluido él mismo (no solo los contenidos como .innerHTML).

Cuestiones relacionadas