似乎在Javascript中,如果您有一個DOM元素的引用,然後通過向document.body添加其他元素來修改DOM,那麼您的DOM引用將失效。Javascript:「Dangling」引用DOM元素?
考慮下面的代碼:
<html>
<head>
<script type = "text/javascript">
function work()
{
var foo = document.getElementById("foo");
alert(foo == document.getElementById("foo"));
document.body.innerHTML += "<div>blah blah</div>";
alert(foo == document.getElementById("foo"));
}
</script>
</head>
<body>
<div id = "foo" onclick='work()'>Foo</div>
</body>
</html>
當您點擊DIV,這提醒 「真」,然後是 「假的」。換句話說,修改document.body
後,對DIV元素的引用不再有效。在Firefox和MSIE上這種行爲是相同的。
一些問題:
爲什麼會發生這種情況? 此行爲是由ECMAScript標準指定的,還是這是一個特定於瀏覽器的問題?
注意:有another question張貼在似乎是指同一問題的計算器,但問題和答案都不是很清楚。
'innerHTML'實際上是在HTML5中標準化的。 – 2010-05-01 13:38:27