0

ページをロードすると関数が実行され、「関数の実行」と警告されるのはなぜですか。要素のクリックでのみトリガーする関数が必要な場所ではありません。

<script type="text/javascript">

open_close = function() {
   alert("function run");
   //some code ...
}

window.onload = function() {
   //some code ...
   var myButton = document.getElementById('button');
   myButton.onclick = open_close();
   //some code ...
}

</script>

ここにjfiddleのデモがありますhttp://jsfiddle.net/ayeBP/

4

2 に答える 2

3

ああ、でもあなたそれを実行しました:

myButton.onclick = open_close();

括弧は関数を呼び出します。代わりにこれを使用してください:

myButton.onclick = open_close;

さらに良いこと (従来の IE のサポートについてはクリックしてください):

myButton.addEventListener('click', open_close);

さて、これは単純化された関数でした。実際に 2 つの変数を渡す必要があります。myButton.onclick = open_close(var1,var2);

括弧は関数を呼び出すため、引き続き実行しようとしても括弧を使用することはできません。無名関数を使用します。

myButton.onclick = function () {
    open_close(var1, var2);
};

// or, even better,
myButton.addEventListener('click', function () {
    open_close(var1, var2);
});
于 2012-05-13T21:28:04.483 に答える
1

open_close()と置き換えますopen_close

ここで括弧を使用すると、関数がすぐに呼び出され、その戻り値が割り当てられますmyButton.onclick

于 2012-05-13T21:27:56.960 に答える