2017-04-16 66 views
0
<!DOCTYPE HTML> 
<html> 
<head> 
<script type="text/javascript"> 
var num=0; 
function numCount(){ 
document.getElementById('txt').value=num; 
num=num+1; 
setTimeout(numCount(),1000); 
} 

</script> 
</head> 
<body> 
<form> 
<input type="text" id="txt" /> 
<input type="button" value="Start" onClick="numCount()" /> 
</form> 
</body> 
</html> 

你爲什麼要括號添加到第一個參數在上面的代碼,你爲什麼在seTimeout加雙引號?那setInterval呢?setTimeout和setInterval的第一個參數加上沒有括號,再加上沒有雙引號

+1

你不想加括號。 'numCount'不返回任何內容。什麼是「雙引號」? – Carcigenicate

+0

是的setTimeout( 「numcount」),1000); – helloworld

回答

1

將其更改爲:

setTimeout(numCount,1000); 

隨着(),你會立即調用該函數。上面是傳遞函數作爲參考,它將在延遲時間後被調用。使用引號

其他不太優選的方法是:

setTimeout('numCount()',1000); // or setTimeout("numCount()",1000); 

使用字符串參數..字符串將被作爲腳本在定時器延時結束評估

有疑問時看它在MDN docs

+0

哦,這就是他的意思。老實說,我認爲只有PHP允許。 – Carcigenicate

+0

@Carcigenicate它基本上被編譯類似於'的eval()'內部,如果它是字符串 – charlietfl

+1

雅。我看不出爲什麼你可能想這樣做;似乎會鼓勵脆弱的代碼。傳遞一個函數引用只會讓你更有意義。 – Carcigenicate