我有以下javascript -
function onLoad() {
if (!(document.applets && document.VLVChart && document.VLVChart.isActive())) {
setTimeout('onLoad()', 200);
return;
}
objChart = document.VLVChart;
PollEvent();
}
function fan() {
objChart.reorganize();
}
然后加载HTML页面时
<body onLoad="onLoad()">
并在HTML中有一个执行fan()
函数的按钮 -
<input type='button' value='Fan' onClick='fan();'>
我是否可以激活onload事件中的fan()
函数,以便用户不必点击按钮?
修改 在尝试提供的答案后,调试代码中断行 -
objChart.reorganize();
在fan()
函数中包含错误 -
SCRIPT5007: Unable to get value of the property 'reorganize': object is null or undefined
这很奇怪,因为当我手动点击页面上的按钮时,该功能正常。
解决方案
经过多次努力,我意识到我试图在页面(更具体地说是objChart)完全加载之前加载fan()
函数。因此,为什么在onLoad
事件中添加函数不起作用。我添加了setTimeout
-
function Fan()
{
setTimeout(function(){objChart.reorganize();},3000);
}
答案 0 :(得分:3)
<body onload='onLoad(); fan();'>...
然而,最好避免使用内联JS,您最好开始研究集中式事件管理。这有很多好处。
An answer I wrote yesterday另一个问题概述了为什么会这样。像jQuery这样的东西如果它对你来说是新的那么简单。
$(function() {
$('body').on('load', function() {
onLoad();
fan();
});
});
答案 1 :(得分:0)
阅读你的问题我假设你甚至没有尝试过。只需在onLoad()
- 函数中调用该函数:
function onLoad()
{
fan();
/* … */
}
答案 2 :(得分:0)
是
你可以使用<body onload='onLoad(); fan();'>
作为Utkanos的建议。
如果您使用jQuery,您还可以在头部包含以下内容:
$(function(){
...
});
jQuery函数实际上更早发生,如here所述。