У меня возникли некоторые проблемы со ссылкой на элемент DOM, и я думаю, что это связано с тем, что что-то связано с обновлением innerHTML.
В этом примере при первом предупреждении две переменные ссылаются на один и тот же элемент, как и ожидалось. Что странно, так это то, что после обновления 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. Любая идея, что заставляет второе предупреждение оценивать как ложное?