3

我有以下 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 

这很奇怪,因为当我手动单击页面上的按钮时,该功能工作正常。

解决方案 经过多次头疼后,我意识到我试图fan()在页面(更具体地说是 objChart)完全加载之前加载函数。因此,为什么在onLoad事件中添加功能不起作用。我添加了一个setTimeout-

function Fan()
{
setTimeout(function(){objChart.reorganize();},3000);
}
4

3 回答 3

3
<body onload='onLoad(); fan();'>...

但是最好避免使用内联 JS,最好开始研究集中式事件管理。这有各种优点。

我昨天写的另一个问题的答案概述了为什么会这样。如果它对您来说是新的,那么像 jQuery 之类的东西会让这变得微不足道。

$(function() {
    $('body').on('load', function() {
        onLoad();
        fan();
    });
});
于 2012-08-01T09:46:38.793 回答
0

阅读您的问题,我假设您甚至没有尝试过。只需从您的onLoad()-function 中调用该函数:

function onLoad()
{
    fan();
    /* … */
}
于 2012-08-01T09:47:57.183 回答
0

是的。

您可以<body onload='onLoad(); fan();'>按照 Utkanos 的建议使用。

如果您使用 jQuery,您还可以在头部粘贴一个脚本,其中包含:

$(function(){
   ...
});

jQuery 函数实际上会更早地触发,正如这里所解释的。

于 2012-08-01T09:49:18.273 回答