我遇到了DOM元素引用的一些問題,我想我已經跟蹤了一些與更新innerHTML有關的事情。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中得到了相同的結果。任何想法是什麼導致第二次警報評估爲false?
是的。如果你已經使用了'document.createElement'然後'document.body.appendChild'作爲第二個div,那麼第一個div將保持原位。 – 2010-01-08 10:02:59