【发布时间】:2017-03-27 21:07:17
【问题描述】:
当我尝试在文档正文中注入原始 html 时,使用 .querySelector(); 检索到的元素的保存实例会突然重置它的 .clientHeight 和 .clientWidth 属性。
以下页面显示问题
<head>
<script>
window.addEventListener('load', pageInit);
function pageInit() {
// saving instance for later use
var element = document.querySelector('#element')
alert(element.clientHeight); // returns 40
document.querySelector('body').innerHTML += '<p>anything</p>';
alert(document.querySelector('#element').clientHeight); // returns 40
alert(element.clientHeight); // returns 0
}
</script>
<style>
#element {
height: 40px;
}
</style>
</head>
<body>
<div id="element"></div>
</body>
为什么元素变量的实例属性会被重置? 正如这个问题中所指出的,addEventListener gone after appending innerHTML eventListeners 被分离,但这仍然不能解释为什么该元素节点仍然存在以及为什么它的属性被清零。
【问题讨论】:
-
注意
querySelector返回一个元素;querySelectorAll返回非实时NodeList。 -
感谢指出,我会编辑问题
标签: javascript