Is there a way to check if two DOM elements are equal?

It's no problem to find an element by position and the position of an element in Javascript. But is there are general way to compare them?

The only way I could think of is comparing ids or classnames, but not all elements have ids or classnames.

61190 次浏览

If you want to compare two element pointers for being the same element, just use the comparison operator. This can be easily proven because

document.body === document.body

For example, if I somehow had references to two elements I didn't know:

if (element1 === element2) ...

In modern browsers there are two methods for comparing nodes.

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

but

b.isSameNode(a); //false

And as for IE, it's DOM elements have non-stanard attribute, uniqueID. But I can't imagine it can be useful in this case, since yes, you actually can compare two pointers.

=== Operator still relevant https://developer.mozilla.org/en-US/docs/Web/API/Node/isSameNode

Even if you make changes to the DOM, === operator works fine.

const body = document.body; body.setAttribute("test","done"); const _body = document.body; body === _body // true.

:).