Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递函数表达式以用作按钮的onclick处理程序_Javascript_Function Expression - Fatal编程技术网

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

Javascript 传递函数表达式以用作按钮的onclick处理程序,javascript,function-expression,Javascript,Function Expression,对于按钮,我需要在运行时设置此调用的函数以及该调用中使用的值。 我可以这样做: var myfunction = /* ... */ var myvalue = /* ... */ button.setAttribute ("onclick", myfunction + "('" + myvalue + "')"); 如果我尝试改为: button.setAttribute ("onclick", function () { myfunction(myvalue)); 萤火虫给了我一个机会

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

var myfunction = /* ... */
var myvalue = /* ... */
button.setAttribute ("onclick", myfunction + "('" + myvalue + "')");
如果我尝试改为:

button.setAttribute ("onclick", function () { myfunction(myvalue));
萤火虫给了我一个机会

“函数语句需要一个名称”


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

您缺少一个右大括号

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

应该是

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


但是您可能不想使用setAttribute来设置按钮的onclick,请尝试
button.onclick=function(){myfunction(myvalue);};
,相反,您缺少了一个右括号

button.onclick = function() {
    myfunction(myvalue);
}
button.setAttribute(“onclick”,function(){myfunction(myvalue));

应该是

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

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

button.onclick = function() {
    myfunction(myvalue);
}
不过,使用以下选项会更好:

button.addEventListener('click', function() {
    myfunction(myvalue);
}, false);
不过,使用以下选项会更好:

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

如果您正在考虑纯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);

请注意(要求代码>附件事件< /代码>和<代码> AdvestListListAu/<代码>不能在IE上工作,并且在其他浏览器上工作。因此,如果您考虑纯JavaScript:

,则必须考虑这两个函数使其为强>跨浏览器支持< /强>

< P>。
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);

请注意(要求代码>附件事件< /代码>和<代码> AdvestListListAu/<代码>在IE上不工作,在其他浏览器上工作。因此,您必须考虑这两个函数,使其“强”>跨浏览器支持< /强> ./p>使用。OnCouter是很好的。但是有一个问题。最近的IEs确实支持addEventListener。使用.onclick很好-当您需要多个函数时,它自然会交叉浏览,但您会遇到问题。最近的IEs确实支持addEventListener。