为什么仅仅因为我设置了“setInterval”函数就显示不同的“clientWidth”值?
Why it shows different “clientWidth” value just because I set the “setInterval” function?
我试图获取 clientWidth
值以了解 body 的宽度。但是我发现了一个问题:
原代码如下:
<input type="text" id="width"><br/>
<input type="text" id="height">
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
getScreenSize();
</script>
<div style="margin-top: 5300px;">foot</div>
当我只把getScreenSize();
改成setInterval("getScreenSize()",10);
的时候,如下图:
<input type="text" id="width"><br/>
<input type="text" id="height">
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
setInterval("getScreenSize()",10);
</script>
<div style="margin-top: 5300px;">foot</div>
无缘无故,clientWidth
的值变了。
有谁知道为什么仅仅因为我设置了 setInterval
函数它就改变了?
您的脚本可能 运行 在页面完全呈现之前,因此页面的大小实际上可以改变。您需要确保您的代码在 DOM(文档对象模型)完成后运行(有关详细信息,请参阅 window.onload vs $(document).ready())。
发生这种情况是因为没有 setInterval,您的 script
运行 会在底部的 div
之前添加。
所以当浏览器读取您的页面时,它 运行 脚本然后添加底部 div,此时 运行 宽度和高度不计算对于 div
。
对于 setInterval
,它占 div
。
将脚本移到底部会从两种方式呈现相同的响应。
<input type="text" id="width"><br/>
<input type="text" id="height">
<div style="margin-top: 5300px;">foot</div>
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
getScreenSize();
</script>
我试图获取 clientWidth
值以了解 body 的宽度。但是我发现了一个问题:
原代码如下:
<input type="text" id="width"><br/>
<input type="text" id="height">
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
getScreenSize();
</script>
<div style="margin-top: 5300px;">foot</div>
当我只把getScreenSize();
改成setInterval("getScreenSize()",10);
的时候,如下图:
<input type="text" id="width"><br/>
<input type="text" id="height">
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
setInterval("getScreenSize()",10);
</script>
<div style="margin-top: 5300px;">foot</div>
无缘无故,clientWidth
的值变了。
有谁知道为什么仅仅因为我设置了 setInterval
函数它就改变了?
您的脚本可能 运行 在页面完全呈现之前,因此页面的大小实际上可以改变。您需要确保您的代码在 DOM(文档对象模型)完成后运行(有关详细信息,请参阅 window.onload vs $(document).ready())。
发生这种情况是因为没有 setInterval,您的 script
运行 会在底部的 div
之前添加。
所以当浏览器读取您的页面时,它 运行 脚本然后添加底部 div,此时 运行 宽度和高度不计算对于 div
。
对于 setInterval
,它占 div
。
将脚本移到底部会从两种方式呈现相同的响应。
<input type="text" id="width"><br/>
<input type="text" id="height">
<div style="margin-top: 5300px;">foot</div>
<script>
function getScreenSize(){
document.getElementById("width").value= document.body.clientWidth;
document.getElementById("height").value= document.body.clientHeight;
}
getScreenSize();
</script>