我想在body onload期间调用三个JavaScript函数。
<body onload="initializeb(); initializec(); initialize();">
由于某种原因,它只调用前两个,然后甚至没有调用第三个函数。
有人请告诉我为什么在第二个功能之后失败了吗?
答案 0 :(得分:4)
最好有一个共同的函数initialize()
并从那个
<body onload="initialize();">
function initialize(){
initializeb();
initializec();
initialized();
}
答案 1 :(得分:2)
我建议将所有初始化功能合并到一个initialize()
函数中,非常类似于用户Ramesh Kotha pointed out:
<body onload="initialize();">
function initialize(){
initializeA();
initializeB();
initializeC();
// other init tasks ...
}
但是应该补充说,body onload
如果你试图支持旧的浏览器(尤其是旧版本的IE或Safari),有时会出现问题,所以如果你在你的浏览器中使用jQuery,我想补充说明应用程序,然后您可以使用jQuery的$(document).ready()
处理程序在DOM准备好之后加载任何init函数(这实际上是body onload正在发生的事情,没有任何麻烦),所以这段代码在功能上等同于上面的代码:
// Example using jQuery's .ready() function
$(document).ready(function(){
initializeA();
initializeB();
initializeC();
// other init tasks ...
});
其中一个函数未被调用的原因很可能是由于函数中的错误。只需在您认为无效的函数顶部放置console.log()
语句,然后检查控制台输出:
function initialize() {
console.log("initialize function has been called");
}
希望这有帮助。
答案 2 :(得分:1)
使用eventlistener怎么样?像这样:
if (document.addEventListener) {
window.addEventListener("load", initializeA);
window.addEventListener("load", initializeB);
window.addEventListener("load", initializeC);
}
else if (document.attachEvent) {
window.attachEvent("onload", initializeA);
window.attachEvent("onload", initializeB);
window.attachEvent("onload", initializeC);
}
else {
window.onload = function() {
initializeA(), initializeB(), initializeC()
};
}