gpt4 book ai didi

javascript - innerHTML 副作用?

转载 作者:行者123 更新时间:2023-11-29 18:37:01 28 4
gpt4 key购买 nike

我在 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 中得到相同的结果。知道是什么导致第二个警报评估为假吗?

最佳答案

当您获得 body 的 innerHTML 值,向其添加一个字符串并将其放回 body 时,body 中的所有元素都是从 HTML 字符串重新创建的。变量中的内容是对页面中不再存在的元素的引用。

关于javascript - innerHTML 副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026732/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com