11

btw_bijtellen ()ページが読み込まれるとすぐに関数が呼び出されるのはなぜだろうか。クリックで呼び出したかった…

var $ = function (id) {
    return document.getElementById (id);
}

function btw_bijtellen () {
    window.alert("we want to calculate something after clicking th button");
}

$("bereken").onclick = btw_bijtellen ();
4

3 に答える 3

23

()関数を実行する原因を追加しました。

例えば:

var myFunc1 = function() {
    alert('Hello');
}(); // <--- () causes self execution

var myFunc2 = function() {
    return 5 + 5;
};

var some_value = myFunc2(); // <--- Again () causes execution (you'd expect this one)

あなたの場合、コメントで述べたように、基本的には、onclickその値を関数の戻り値に設定するように指示しています。

ドロップする()と、期待どおりに実行されるはずです。

于 2013-02-12T09:36:09.793 に答える
3

クリック時に関数を呼び出す場合は、次を使用します

$("bereken").on('click', btw_bijtellen);

更新(WAOからの問い合わせによる)

引数を渡す必要がある場合は、2 番目の引数として指定する必要があります。ハンドラで$.on()データを取得しますevent

$("bereken").on('click', {key1: value1, key2: value2, keyn: valuen}, btw_bijtellen);

ここで、パラメータを取得できますevent.data

var function = btw_bijtellen(event) {
    var data = event.data;
    console.log(data);

    var key1 = event.data.key1;
    console.log(key1);  // this will output value1
}

このリンクjQuery $.on() apiを読んでください

于 2013-02-12T09:49:51.703 に答える
1

関数名の後に置く()ことは、それを呼び出す方法です。

をに割り当てたい場合は、質問のコードの最後の行からbtw_bijtellenonclick削除します。()

there を使用して()、関数を呼び出し、その戻り値を に代入していますonclick。その関数にはreturnステートメントがないため、その値はundefinedあなたが望むものではありません。

于 2013-02-12T09:36:31.487 に答える