14

次のように、ボディオンロードに2つのjavascriptイベント/関数をロードしようとしています:-

<body onLoad="getSubs(document.form1.HotelID.options[document.form1.HotelID.selectedIndex].value);getTags(document.form1.HotelID.options[document.form1.HotelID.selectedIndex].value);">

2つの関数を使用してロードするたびに、最初の関数が中止されます-しかし、1つだけをロードすると正常に動作します-onload内に2つの関数を配置することは不可能ですか?

4

4 に答える 4

20

これを試して:

<html>
<head>
<script language="javascript">
function func1(){
    //the code for your first onload here
    alert("func1");
}
function func2(){
    //the code for your second onload here
    alert("func2");
}
function func3(){
    //the code for your third onload here
    alert("func3");
}
function start(){
    func1();
    func2();
    func3();
}
</script>
</head>
<body onload="start()">
</body>
</html>

複数の負荷

于 2012-04-12T11:37:41.417 に答える
8

代わりにJavaスクリプトから実行してください。コメントに共有されているリンクの1つは、インライン属性に対してこのアプローチを使用するのが最善である理由をよく説明しています。

<head>
<script>
document.body.onload = function() {
getSubs(...);
getTags(...);
};
</script>
</head>
<body>
...
</body>
于 2012-04-12T11:33:39.947 に答える
2

それinline javascriptはあなたが質問のコードで行ったことです.HTML属性内にjavascriptを追加してください。


ベスト プラクティスは、javascript を別のファイルに追加することです。この原則に関する関連する質問を参照してください

したがって、たとえば「myjsfile.js」という名前の別のファイルがあり、HTML ページからそれを参照します。

<script src="./path/to/your/myjsfile.js"></script>

この参照を配置する場所の答えは次のとおりです: Javascript を HTML ファイルのどこに配置しますか?

「myjsfile.js」ファイルは次のようになります。

window.onload =  function(){
    getSubs(...);
    getTags(...);
};

避けるべきもう 1 つのこと: 同じ HTML ファイル内に JavaScript を追加します。その理由も と同じ原理に基づいていunobstrusive javascriptます。素人の言葉で控えめなJavascriptとは何ですか?

しかし、それをしたいコーナーケースがあると思います。

本当に必要な場合window.onloadは、インライン javascript の代わりに使用してください。ここでwindow.onload vs <body onload=""/>onload="..."の理由を参照してください

以下を HTML ファイルに追加するだけです。

<script type="text/javascript">
    window.onload =  function(){
        getSubs(...);
        getTags(...);
    };
</script>

このコードを配置する場所の答えは次のとおりです: Javascript を HTML ファイルのどこに配置しますか?

注: はい、外部 JavaScript ファイルへの参照を配置する場所と同じ場所に


getSubs()もう 1 つ: 関数とgetTags()関数がどこで定義されているかわかりません。ただし、コードを機能させたい場合は、これらの関数を定義するファイル (または JavaScript の一部) がロードされた後に、これらの関数を呼び出す必要があります。

getSubs()つまり、との定義を含む JavaScript ファイルがコードの前にgetTags()参照されていることを確認してください。

于 2014-09-30T08:18:02.763 に答える
0

できることの 1 つは、document.form1.HotelID.options[document.form1.HotelID.selectedIndex].value パラメーターを受け入れる新しい JS 関数を作成し、新しく作成した関数で 2 つの関数を呼び出すことです。

以下のコードを使用して2つの関数を呼び出してみましたが、うまくいきました。

<html>
    <body onload="callStart();callAgain();">
        <script type="text/javascript">
            function callStart() {
                alert('First');
            }
            function callAgain() {
                alert('Again');
            }
        </script>
    </body>
</html>
于 2012-04-12T11:33:10.990 に答える