javascript 事件函数赋值为什么不带(),但是我试了一下带(),貌似也能执行,但是结果不太一样:
functioncountBodyChildren(){varbody_element=document.getElementsByTagName("body")[0];...
function countBodyChildren() {
var body_element = document.getElementsByTagName("body")[0]; alert(body_element.childNodes.length);
}
window.onload = countBodyChildren; //弹出的提示框返回11
window.onload = countBodyChildren(); //弹出的提示框返回8
这是怎么回事?请高人指点!!
补充html页面: 展开
var body_element = document.getElementsByTagName("body")[0]; alert(body_element.childNodes.length);
}
window.onload = countBodyChildren; //弹出的提示框返回11
window.onload = countBodyChildren(); //弹出的提示框返回8
这是怎么回事?请高人指点!!
补充html页面: 展开
3个回答
展开全部
window.onload = countBodyChildren;
是让countBodyChildren成为页面加载完成后去执行的函数。
window.onload = countBodyChildren(); 是马上执行countBodyChildren,然后把执行结果赋给onload。
所以两种写法都会执行countBodyChildren,只是执行的时机不一样。
我猜测你这个js代码应该是写在body下面的,所以在执行时childNodes还值是8;等页面全部读取结束后再调用countBodyChildren,此时script还有下面的节点也加入了body 就变成11了
是让countBodyChildren成为页面加载完成后去执行的函数。
window.onload = countBodyChildren(); 是马上执行countBodyChildren,然后把执行结果赋给onload。
所以两种写法都会执行countBodyChildren,只是执行的时机不一样。
我猜测你这个js代码应该是写在body下面的,所以在执行时childNodes还值是8;等页面全部读取结束后再调用countBodyChildren,此时script还有下面的节点也加入了body 就变成11了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询