亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么不能在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>


正在回答

3 回答

首先,這里script位置在代碼前面,按照頁面加載順序,從上往下;

如果用?startCount(),當加載到document.getElementById('count')這一句的時候,并不能獲取到body里面的元素(因為還沒加載到),所以會報錯;

因為如果用?setTimeout("startCount()",1000),意思延遲1秒鐘再去執行startCount函數,在這1秒鐘內,body里面的元素已經加載完畢,再去執行startCount函數就能夠正常執行document.getElementById('count');

這就是原因,改進辦法很簡單,直接將整個<script>放到</body>上方即可

2 回復 有任何疑惑可以回復我~
#1

weibo_e_狼傳說_0 提問者

非常感謝!原來還有這個細節
2016-10-31 回復 有任何疑惑可以回復我~
#2

人在夢游中

你好,但是我使用 setTimeout("startCount()"); 也是可以調用的,這是為什么啊
2016-11-02 回復 有任何疑惑可以回復我~
#3

stone310 回復 人在夢游中

setTimeout("startCount()"); 這樣寫相當于 setTimeout("startCount()",0);這么寫的意思是等文檔流穩定后,再去執行setTimeout,所以可以調用,往深一點說就是定時器是有一個單獨的線程,可以達到變更文檔加載順序的效果,更詳細可自行上網查閱
2016-11-02 回復 有任何疑惑可以回復我~
#4

人在夢游中 回復 stone310

3Q.
2016-11-03 回復 有任何疑惑可以回復我~
#5

Tyler_me 回復 stone310

setTimeout("startCount()",0);就是相當于onload="startCount()";是吧?
2016-11-10 回復 有任何疑惑可以回復我~
#6

stone310 回復 Tyler_me

要等onload事件結束后,再執行settimeout里面的事件
2016-11-10 回復 有任何疑惑可以回復我~
#7

Tyler_me 回復 stone310

懂了,謝謝
2016-11-10 回復 有任何疑惑可以回復我~
查看4條回復

<!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都不行。谷歌沒試過.。這是為什么啊


0 回復 有任何疑惑可以回復我~

<!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

望采納

0 回復 有任何疑惑可以回復我~
#1

weibo_e_狼傳說_0 提問者

我還有一個問題想請教請教你
2016-10-31 回復 有任何疑惑可以回復我~
#2

老友丶 回復 weibo_e_狼傳說_0 提問者

應該沒有了吧,你采納的那位大神已經回答得很完美了。
2016-10-31 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么不能在script中運行 startCount();而是要加setTimeout("startCount()",1000);

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號