這樣寫,startCount()為什么不能自動執行?
<!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);
? }
?? startCount();
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2016-01-02
這是因為你的js在執行時,下面的input輸入框還沒有生成 ,所以就報錯了,你可以這樣試一下,把js代碼放到下面
2016-01-23
我也是對這一點有疑惑,百度了半天,沒找到,回頭一看這里有。
李曉健的回答很好,我這樣理解:定義完成后直接調用startCount正如你所說,不正確,因為<body>部分還沒有加載。所以直接調用不正確。按照這種理解,我再<input.....>后面增加了<script type="text/javascript">startCount();</script>竟然真的可以通過。
? ? 這就說明,setTimeout();函數,是第一個參數的javascript語句延遲執行,而不是該函數下面的javascript語句也停下來等待執行。僅僅是延遲一段時間執行本函數語句內第一個參數內容。
? ??
2016-01-02
<!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);
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>