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 J开发者_C百科avascript. 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.
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.
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) ...
=== 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.
:).
精彩评论