Javascript 为什么不能设置`document.getElementById(“text”);`全球化?
这是我的60秒计时代码,它运行成功Javascript 为什么不能设置`document.getElementById(“text”);`全球化?,javascript,Javascript,这是我的60秒计时代码,它运行成功 <html> <head> <script type="text/javascript"> var start=Date.now(); function showtime(){ var c=document.getElementById("text"); var nowtime=60-Math.floor((Date.now()-start)/1000); c.
<html>
<head>
<script type="text/javascript">
var start=Date.now();
function showtime(){
var c=document.getElementById("text");
var nowtime=60-Math.floor((Date.now()-start)/1000);
c.innerHTML="left time is "+ nowtime +" seconds";
}
function countTime(){
var c=document.getElementById("text");
c.innerHTML="left time is 60 seconds";
setInterval("showtime()",1000);
}
</script>
</head>
<body onload="countTime()">
<div id="text"></div>
</body>
</html>
请解释设置document.getElementByIdtext时程序无法运行的原因;详细信息为全局。它可以工作,但在脚本运行并尝试查找元素时的第二个示例中,它不在那里,因为您既没有使用window.onload,也没有将脚本放在html下面。不要把javascript放在头上。将代码重新设置为
<html>
<head>
</head>
<body onload="countTime()">
<div id="text"></div>
<script type="text/javascript">
var start=Date.now();
var c=document.getElementById("text");
function showtime(){
var nowtime=60-Math.floor((Date.now()-start)/1000);
c.innerHTML="left time is "+ nowtime +" seconds";
}
function countTime(){
c.innerHTML="left time is 60 seconds";
setInterval("showtime()",1000);
}
</script>
</body>
</html>
它会工作。它会工作,但在第二个示例中,当脚本运行并尝试查找元素时,它不在那里,因为您既没有使用window.onload,也没有将脚本放在html下面。不要把javascript放在头上。将代码重新设置为
<html>
<head>
</head>
<body onload="countTime()">
<div id="text"></div>
<script type="text/javascript">
var start=Date.now();
var c=document.getElementById("text");
function showtime(){
var nowtime=60-Math.floor((Date.now()-start)/1000);
c.innerHTML="left time is "+ nowtime +" seconds";
}
function countTime(){
c.innerHTML="left time is 60 seconds";
setInterval("showtime()",1000);
}
</script>
</body>
</html>
而且它会起作用。因为您只需要在代码运行时使用DOM元素,所以您也可以使用事件并将代码保存在头部:
<script>
document.addEventListener("DOMContentLoaded", function() {
console.log("DOM fully loaded and parsed");
});
</script>
然后将所有代码放入事件侦听器。由于您只需要在代码运行时提供DOM元素,因此您也可以使用事件并将代码保留在头部:
<script>
document.addEventListener("DOMContentLoaded", function() {
console.log("DOM fully loaded and parsed");
});
</script>
然后将所有代码放入事件侦听器。您正在将脚本加载到文件中,这意味着在生成主体之前脚本已完全加载
在第一个代码段中,c=document.getElementByIdtext位于脚本中的函数中
因此,该语句仅在调用函数时执行
该调用发生在主体加载之后
此时,id=text的元素已经存在,因此getElementById能够找到它,并且c已经正确定义
但是,当您将该语句移到全局范围之外时,该语句会在创建div之前加载主体之前执行
因此,document.getElementbyIDtext将找不到任何内容,c将被设置为未定义,因此没有任何用处。您正在文件中加载脚本,这意味着在生成正文之前脚本已完全加载
在第一个代码段中,c=document.getElementByIdtext位于脚本中的函数中
因此,该语句仅在调用函数时执行
该调用发生在主体加载之后
此时,id=text的元素已经存在,因此getElementById能够找到它,并且c已经正确定义
但是,当您将该语句移到全局范围之外时,该语句会在创建div之前加载主体之前执行
因此,document.getElementbyIDtext将找不到任何内容,c将被设置为未定义,因此没有任何用处