我正在尝试在身体加载期间调用三个JavaScript函数。
<body onload="initializeb(); initializec(); initialize();">
出于某种原因,它只调用前两个函数,然后甚至不调用第三个函数。
有人可以启发我为什么在第二个功能之后失败吗?
最好有一个通用函数initialize()
并从中调用所有剩余的函数
<body onload="initialize();">
function initialize(){
initializeb();
initializec();
initialized();
}
我建议将所有初始化功能整合到一个initialize()
函数中,就像用户Ramesh Kotha指出的那样:
<body onload="initialize();">
function initialize(){
initializeA();
initializeB();
initializeC();
// other init tasks ...
}
但是应该补充的是,如果您尝试支持较旧的浏览器(尤其是旧版本的IE或Safari),body onload
有时会出现问题,因此我想补充一点,如果您在应用程序中使用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");
}
希望这有帮助。
使用事件侦听器怎么样? 像这样:
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()
};
}