以本题为例
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
setTimeout("startCount()",1000)
}
setTimeout("startCount()",0);//成功执行 相当于直接运行而使用starCount();或者window.onload=starCount();则失败,必须把脚本放到body最后面才可以成功执行,为什么
刚刚也搞不清楚这个问题,看了前面的回答,理解如下:直接执行函数,有()会立即执行,还没加载完。用window.onload调用startCount,没有()就可以了。而setTimeout("startCount()",0)立即执行的是setTimeout,不是"startCount()"。
加括号表示直接调用,window.onload=starCount()这句会无视onload事件读到这一行直接执行starCount();此时如果dom没读完就会失败,放到最后面是在前面dom都读完之后再执行的,所以成功,改为window.onload=starCount;这种不带括号的就放前放后都可以了
window.onload=starCount(),改为window.onload=starCount,原理上两个应该是一样的