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();'>

fan()ユーザーがボタンをクリックする必要がないように、onload イベント内で機能をアクティブにすることは可能ですか?

編集 提供された回答を試した後、コードのデバッグ時に行が壊れます-

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 に答える