DOM3级引入了两个辅助比较节点的方法:isSameNode( )和isEqualNode( )。
分别判断传入的节点与引用的节点是否相同
和相等
所谓相同
,指的是两个节点引用的是同一个对象;
所谓相等
,指的是两个节点是否是同一类型,具有相等的属性(nodeName,nodeValue。。。等等),还有相等的attributes,childNodes(相同的位置包含相同的值)
语法:
node1.isSameNode(node2)
node1.isEqualNode(node2)
举个栗子~
html:
<form action="#">
<input type="button"/>
</form>
<form action="#">
<input type="button"/>
</form>
<form action="#" id="o">
<input type="button"/>
</form>
<form action="#" id="o">
<input type="text"/>
</form>
js:
var forms = document.forms;
var form1 = forms[0];
var form2 = forms[1];
var form3 = forms[2];
var form4 = forms[3];
var _form1 = document.querySelectorAll('form')[0];
console.log( form1.isSameNode(form1) ) //true 两个节点引用的对象都是第一个form
console.log( form1.isSameNode(_form1) ) //true 两个节点引用的对象都是第一个form
console.log( form1.isSameNode(form2) ) //false 两个节点引用的不是一个对象
console.log( form1.isEqualNode(form2) ) //true 两个节点具有完全等同属性
console.log( form1.isEqualNode(form3) ) //false form1中无等同的id属性
console.log( form3.isEqualNode(form4)) //fasle form4的childNodes中的input为text类别,与form3不同