javascript函数在没有被调用的情况下运行

时间:2013-02-12 09:35:04

标签: javascript function-calls

我想知道为什么,只要页面加载,就会调用函数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 ();

3 个答案:

答案 0 :(得分:16)

您添加了导致该功能执行的()

例如:

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将其值设置为函数的返回值。

如果删除(),它应按预期运行。

答案 1 :(得分: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

答案 2 :(得分:0)

()放在函数名后面是你如何调用它。

如果您要将btw_bijtellen分配给onclick,请从问题代码的最后一行删除()

使用(),您正在调用该函数并将其返回值分配给onclick。由于该函数没有return语句,因此该值将为undefined,这不是您想要的。