為什么不能在script中運行 startCount();而是要加setTimeout("startCount()",1000);
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
</head>
<script type="text/javascript">
? var num=0;
? function startCount() {
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? ?setTimeout("startCount()",1000);
? }
??setTimeout("startCount()",1000);
? ? startCount();//用了這句話就報錯了
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2016-10-31
首先,這里script位置在代碼前面,按照頁面加載順序,從上往下;
如果用?startCount(),當加載到document.getElementById('count')這一句的時候,并不能獲取到body里面的元素(因為還沒加載到),所以會報錯;
因為如果用?setTimeout("startCount()",1000),意思延遲1秒鐘再去執行startCount函數,在這1秒鐘內,body里面的元素已經加載完畢,再去執行startCount函數就能夠正常執行document.getElementById('count');
這就是原因,改進辦法很簡單,直接將整個<script>放到</body>上方即可
2016-10-31
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計時器</title>
</head>
<body>
<script type="text/javascript">
? function startCount() {
? ? document.write(0); ??
? ? ?setTimeout("startCount()",1000);
? }
? ? startCount();
</script>
</body>
</html>
//這串代碼只有360極速模式下能一直執行寫0?;鸷?,ie都不行。谷歌沒試過.。這是為什么啊
2016-10-30
<!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=0;
? function startCount() {
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? ?setTimeout("startCount()",1000);
? }
? ? startCount();//用了這句話就報錯了
</script>
</body>
</html>
這樣子就可以了,解決辦法參考了
http://www.phpernote.com/javascript-function/1135.html
望采納