开发者

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

开发者 https://www.devze.com 2023-01-15 03:22 出处:网络
It\'s no problem to find an element by position and the position of an element in J开发者_C百科avascript.

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.

:).

0

精彩评论

暂无评论...
验证码 换一张
取 消