這樣寫(xiě),startCount()為什么不能自動(dòng)執(zhí)行?
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計(jì)時(shí)器</title>
</head>
<script type="text/javascript">
? var num=0;
? function startCount() {
??? document.getElementById('count').value=num;
??? num=num+1;
??? setTimeout("startCount()",1000);
? }
?? startCount();
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2016-01-02
這是因?yàn)槟愕膉s在執(zhí)行時(shí),下面的input輸入框還沒(méi)有生成 ,所以就報(bào)錯(cuò)了,你可以這樣試一下,把js代碼放到下面
2016-01-23
我也是對(duì)這一點(diǎn)有疑惑,百度了半天,沒(méi)找到,回頭一看這里有。
李曉健的回答很好,我這樣理解:定義完成后直接調(diào)用startCount正如你所說(shuō),不正確,因?yàn)?lt;body>部分還沒(méi)有加載。所以直接調(diào)用不正確。按照這種理解,我再<input.....>后面增加了<script type="text/javascript">startCount();</script>竟然真的可以通過(guò)。
? ? 這就說(shuō)明,setTimeout();函數(shù),是第一個(gè)參數(shù)的javascript語(yǔ)句延遲執(zhí)行,而不是該函數(shù)下面的javascript語(yǔ)句也停下來(lái)等待執(zhí)行。僅僅是延遲一段時(shí)間執(zhí)行本函數(shù)語(yǔ)句內(nèi)第一個(gè)參數(shù)內(nèi)容。
? ??
2016-01-02
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計(jì)時(shí)器</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);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>