函數直接調用,為啥不行?
<!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);?
? }
//這里換成setTimeout(startCount,1000); ,可以
startCount();
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2021-04-11
那為什么setTimeout(startCount,1000); 就可以,直接調用就不行呢
2018-08-27
為了測試函數是否執行我把代碼寫成這樣,結果是只能執行一次,而且并沒有成功的獲取到文本框"count"的id。
既然沒有獲取到"count"的id,再看下?document.getElementById('count').value=num;那這句代碼的是不是等同于null.value=null;這樣的用法很明顯是錯誤的,所以函數終止了,并沒有再往下執行。為了驗證我的推論,注釋掉?document.getElementById('count').value=num;
結果是函數正常執行,只是獲取不到"count"的id值,瀏覽器先顯示
隨后動態顯示
可以看出只有第2次顯示獲取的id有值。所以我猜測在腳本內部以函數名()方式直接調用函數的話,會獲取不到外部元素的id值,所以你的這段代碼不能動態更新"count"文本框中的值。
2018-07-30
代碼沒錯? 把js代碼放在html代碼的后面就可以運行
2018-07-16
在js中函數名可以把它當成指針,函數名加上括號就代表函數立即執行,這里是把startCount函數作為定時器的一個參數傳入,如果加上括號函數立即執行,傳入的參數就變成了函數的返回值,所以不能執行,望采納 謝謝!。