为什么elementA === elementB和elementB.isEqualNode(elementA)的结果不同?
在查看这个关于如何检查两个DOM元素是否相等的问题的回答后,我尝试使用===
来检查javascript中的两个元素是否相等。令人惊讶的是,当元素A
和B
相同时,A === B
返回false
,而B.isEqualNode(A)
返回true
。
以下是一个示例:
html:
<div>
<h1>Test</h1>
</div>
JavaScript:
var inMemoryDiv = document.createElement('div');
var inMemoryH1 = document.createElement('h1');
inMemoryH1.innerHTML = "Test";
inMemoryDiv.appendChild(inMemoryH1);
var h1 = document.getElementsByTagName('h1')[0];
alert(h1 === inMemoryH1); // false
alert(inMemoryH1.isEqualNode(h1)); // true
alert(h1.innerHTML === inMemoryH1.innerHTML); // true
在Fiddle中进行复制。
为什么会这样呢?