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