我在 DOM 元素引用方面遇到了一些问题,我认为我已经将其追踪到与更新 innerHTML 有关。
在此示例中,在第一个警报中,两个变量如预期的那样引用相同的元素。奇怪的是,在更新了父元素(body)的 innerHTML 之后,这两个变量应该是不同的,尽管两者都没有接触。
<html>
<head>
<script type="text/javascript">
var load = function () {
var div1 = document.createElement('div');
div1.innerHTML = 'div1';
div1.id = 'div1';
document.body.appendChild(div1);
alert(div1 === document.getElementById('div1')); // true
document.body.innerHTML += '<div>div2</div>';
alert(div1 === document.getElementById('div1')); // false
};
</script>
</head>
<body onload="load();">
</body>
</html>
使用 == 而不是 === 会产生相同的结果。我在 Firefox 3.5 和 IE6 中得到了相同的结果。知道是什么导致第二个警报评估为假吗?