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 的查询)

如果需要传递参数,则需要指定为第二个参数。$.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然后()从问题中代码的最后一行中删除。

有了()那里,您正在调用该函数并将其返回值分配给onclick. 由于该函数没有return声明,因此该值将undefined不是您想要的。

于 2013-02-12T09:36:31.487 回答