如何理解JavaScript中的isEqualNode()

如何理解JavaScript中的isEqualNode(),javascript,Javascript,我试图理解JavaScript中的isEqualNode()方法,根据W3学校提供的定义,它显然是这样的 isEqualNode()方法检查两个节点是否相等。 如果以下所有条件均为真,则两个节点相等: 它们具有相同的节点类型 它们具有相同的节点名、节点值、localName、nameSpaceURI和 前缀 它们与所有子代具有相同的子节点 它们具有相同的属性和属性值(属性 不必使用相同的顺序) 现在,这里是一些代码的变体,我试图根据定义满足以下条件 主功能(x,y) { /* 要检查节点是否

我试图理解JavaScript中的isEqualNode()方法,根据W3学校提供的定义,它显然是这样的

isEqualNode()方法检查两个节点是否相等。

如果以下所有条件均为真,则两个节点相等:

它们具有相同的节点类型

它们具有相同的节点名、节点值、localName、nameSpaceURI和 前缀

它们与所有子代具有相同的子节点

它们具有相同的属性和属性值(属性 不必使用相同的顺序)

现在,这里是一些代码的变体,我试图根据定义满足以下条件

主功能(x,y)
{
/* 
要检查节点是否相等,请不要使用isEqualNode()
*/
var item1=document.getElementById(x).firstElementChild;
var item2=document.getElementById(y).firstElementChild;
var结果=第1项。等质量节点(第2项);
document.getElementById(“输出”).innerHTML=result;
}

我是abc

我是abc

我是Xyz

我是Xyz

比较Box1和Box2 比较框1和框3 比较框2和框3 比较Box3和Box4 比较第5框和第6框 比较框1和框6
密码说

如果以下所有条件均为真,则节点A等于节点B: A和B的节点类型属性值相同。 … A的每个子级等于B在相同索引处的子级。


因此,这是一个深入的比较,每个子节点都需要相同,包括文本节点。

在DOM中,所有内容都是一个节点。元素是节点(当然),但属性(历史上)、注释、文档、文档片段、doctype和文本也是节点

所有文本都包含在文本节点中

让我们来证明这一点。如果我们在上面代码的
子节点中循环,比如说,
#box4

for(让document.querySelector('#box4').childNodes的子节点){
console.log(child.nodeType);
}


我是Xyz


我不完全确定您为什么认为这些节点应该相等。具有不同的文本值意味着它们具有不同的子体(因为文本值是节点)。不要将w3schools用作引用。这不是一个官方网站。这些信息往往具有误导性和错误性。我更喜欢MDN:@有些我不会说这些信息经常误导或错误,只是没有其他网站那么彻底。自从第一次启动以来,已经有了很大的进步。@4当然,现在比W3傻瓜启动时要好,但仍然存在一些问题。我用过它,被咬过无数次。我的建议仍然是避免上学。如果您使用它,请务必非常小心,并始终使用更可靠的来源来验证信息。@感谢您让我知道这一点,我直到知道才知道。因此,根据此isEqualNode()执行深入比较,以比较两个元素以及其中的文本节点是否正确?@MehulChachada。每个子节点都必须通过相同的
isEqualNode
测试,并且每种类型的节点都会计数。