有没有办法检查两个DOM元素是否相等?

Bob*_*Bob 63 javascript dom

在Javascript中按位置和元素的位置找到元素没有问题.但是有比较它们的一般方法吗?

我能想到的唯一方法是比较id或类名,但并非所有元素都有id或类名.

Del*_*ani 48

如果要将两个元素指针作为同一元素进行比较,只需使用比较运算符即可.这可以很容易地证明,因为

document.body === document.body
Run Code Online (Sandbox Code Playgroud)

例如,如果我以某种方式引用了两个我不知道的元素:

if (element1 === element2) ...
Run Code Online (Sandbox Code Playgroud)

  • @www139 - 我知道其中的区别(在做了 12 年的 JS 之后),但我认为你的第一条评论是不合适的,因为你“记得有人告诉你某处......”而没有彻底了解**为什么**它很重要,它与这个答案的关系似乎不专业。您仍然没有解释为什么在这种特定情况下您认为 `===` 比 `==` 更好。 (2认同)

sha*_*unc 42

在现代浏览器中,有两种比较节点的方法.

var a = document.createElement('div');
var b = document.createElement('div');
b.isEqualNode(a); // true
Run Code Online (Sandbox Code Playgroud)

b.isSameNode(a); //false
Run Code Online (Sandbox Code Playgroud)

至于IE,它的DOM元素具有非标准属性uniqueID.但我无法想象它在这种情况下会有用,因为是的,你实际上可以比较两个指针.

  • 是*折旧*或*弃用*?我们需要直截了当地讲述我们的故事 (3认同)
  • 不推荐使用`isSameNode`函数,你应该使用`isEqualNode`.请参阅https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode (2认同)
  • @idFlood 不再正确 (2认同)
  • 很久以前,FF似乎已停止支持这种方法了.https://www.w3schools.com/jsref/met_node_issamenode.asp (2认同)
  • @Andru它在FireFox 48(2016)中读过 (2认同)