<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
setTimeout("startCount()",1000);
}
startCount();
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
window.onload=function(){
startCount();
}
onload=startCount()
代码从上到下运行的时候,运行到13行,跳进去函数里面,发现.getElementById()这个根本行不通,因为输入框是在<body>里面的,还没被运行到,所以它辨别不出来,因此函数就停在了这里;但是当我们在13行用的是setTimeout("startCount()",1000)时,它会在1秒之后才执行函数,这个时候它代码已经跑过了<body>那里(程序运行速度很快的),所以当它达到1秒之后开始执行函数的时候就不会报错了,可以顺利执行。
js的位置不对 放到body结束标签前 或者在页面加载完成后执行 window.load