qq_弃子_0
2016-11-15 19:36
<script type="text/javascript">
var num=1;
function startCount() {
document.getElementById("count").value=num;
num=num+1;
setTimeout(startCount,1000);
}
startCount();
// setTimeout("startCount()",1000);
</script>
你如果这样子调用,需要把这段代码放在</body>之前。就像这样:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
<script type="text/javascript">
var num=1;
function startCount() {
document.getElementById("count").value=num;
num=num+1;
setTimeout(startCount,1000);
}
startCount();
// setTimeout("startCount()",1000);
</script>
</body>
</html>
具体原因:
首先,这里script位置在代码前面,按照页面加载顺序,从上往下;
如果用 startCount(),当加载到document.getElementById('count')这一句的时候,并不能获取到body里面的元素(因为还没加载到),所以会报错;
因为如果用 setTimeout("startCount()",1000),意思延迟1秒钟再去执行startCount函数,在这1秒钟内,body里面的元素已经加载完毕,再去执行startCount函数就能够正常执行document.getElementById('count');
这就是原因,改进办法很简单,直接将整个<script>放到</body>上方即可
请问为什么要在函数外面用到setTimeout("startCount()",1000)
6666
JavaScript进阶篇
468191 学习 · 21891 问题
相似问题