Кажется, что в Javascript, если у вас есть ссылка на некоторый элемент DOM, а затем измените DOM, добавив дополнительные элементы в document.body, ваша ссылка на 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, появляется предупреждение «true», а затем «false». Другими словами, после изменения document.body
ссылка на элемент DIV больше не действительна. Это поведение одинаково в Firefox и MSIE.
Некоторые вопросы:
Почему это происходит?
Это поведение определяется стандартом ECMAScript или это проблема, специфичная для браузера?
Примечание: есть другой вопрос , опубликованный в stackoverflow, который, похоже, относится к той же проблеме, но ни вопрос, ни ответы не очень ясны.