简体   繁体   中英

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.

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.querySelctor("body"); body.setAttribute("test","done");const _body = document.querySelctor("body"); body === _body // true.

:).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM