传递函数表达式以用作按钮的onclick处理程序

时间:2011-12-03 10:37:01

标签: javascript function-expression

对于一个按钮,我需要在运行时设置此调用的函数以及该调用中使用的值。 我可以这样做:

var myfunction = /* ... */
var myvalue = /* ... */
button.setAttribute ("onclick", myfunction + "('" + myvalue + "')");

如果我改为尝试:

button.setAttribute ("onclick", function () { myfunction(myvalue));

Firebug给了我一个

“函数语句需要名称”

尽管据我所知,我在这里使用的是函数表达式。

3 个答案:

答案 0 :(得分:2)

button.onclick = function() {
    myfunction(myvalue);
}

使用proper event registration method会更好:

button.addEventListener('click', function() {
    myfunction(myvalue);
}, false);

答案 1 :(得分:0)

你错过了一个结束括号。

button.setAttribute ("onclick", function () { myfunction(myvalue));

应该是

button.setAttribute ("onclick", function () { myfunction(myvalue); });

但您可能不想使用setAttribute来设置按钮的onclick,请尝试使用button.onclick = function () { myfunction(myvalue); };

答案 2 :(得分:0)

如果您正在考虑使用纯JavaScript:

function attachEvent(element, event, handler)
{
    if (element && element.attachEvent) {
        element.attachEvent("on" + event, handler);
    }
    else if (element && element.addEventListener) {
        element.addEventListener(event, handler, false);
    }
}

用法:

attachEvent(button, "click", myFunction);

请注意,IE需要attachEvent,而addEventListener不适用于IE,适用于其他浏览器。因此,您必须考虑这两个功能才能使其成为跨浏览器支持