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

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

計時器函數為什么不能在js里直接用 函數名() 調用

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


正在回答

3 回答

你如果這樣子調用,需要把這段代碼放在</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>上方即可


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

AaronWell

請問為什么要在函數外面用到setTimeout("startCount()",1000)
2016-11-28 回復 有任何疑惑可以回復我~
#2

老友丶 回復 AaronWell

你如果不調用,那么函數第一次在哪里執行啊? HTML中也沒有事件。意思你寫的js代碼毫無用處。
2016-11-29 回復 有任何疑惑可以回復我~

請問為什么要在函數外面用到setTimeout("startCount()",1000)

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

6666

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

舉報

0/150
提交
取消

計時器函數為什么不能在js里直接用 函數名() 調用

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

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

幫助反饋 APP下載

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

公眾號

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