為什么不能在script中運(yùn)行 startCount();而是要加setTimeout("startCount()",1000);
<!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);
? ? startCount();//用了這句話就報(bào)錯(cuò)了
</script>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
</body>
</html>
2016-10-31
首先,這里script位置在代碼前面,按照頁(yè)面加載順序,從上往下;
如果用?startCount(),當(dāng)加載到document.getElementById('count')這一句的時(shí)候,并不能獲取到body里面的元素(因?yàn)檫€沒(méi)加載到),所以會(huì)報(bào)錯(cuò);
因?yàn)槿绻?setTimeout("startCount()",1000),意思延遲1秒鐘再去執(zhí)行startCount函數(shù),在這1秒鐘內(nèi),body里面的元素已經(jīng)加載完畢,再去執(zhí)行startCount函數(shù)就能夠正常執(zhí)行document.getElementById('count');
這就是原因,改進(jìn)辦法很簡(jiǎn)單,直接將整個(gè)<script>放到</body>上方即可
2016-10-31
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計(jì)時(shí)器</title>
</head>
<body>
<script type="text/javascript">
? function startCount() {
? ? document.write(0); ??
? ? ?setTimeout("startCount()",1000);
? }
? ? startCount();
</script>
</body>
</html>
//這串代碼只有360極速模式下能一直執(zhí)行寫(xiě)0?;鸷琲e都不行。谷歌沒(méi)試過(guò).。這是為什么啊
2016-10-30
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計(jì)時(shí)器</title>
</head>
<body>
<form>
<input type="text" id="count" />
</form>
<script type="text/javascript">
? var num=0;
? function startCount() {
? ? document.getElementById('count').value=num;
? ? num=num+1;
? ? ?setTimeout("startCount()",1000);
? }
? ? startCount();//用了這句話就報(bào)錯(cuò)了
</script>
</body>
</html>
這樣子就可以了,解決辦法參考了
http://www.phpernote.com/javascript-function/1135.html
望采納