Javascript无理由地调用其他函数

时间:2016-07-07 21:44:06

标签: javascript jquery

我想将事件附加到按钮上,如果用户点击,则会显示警告。但在这里,即使用户没有点击,也会出现警告。

Js档案:

var init = function (m) {
        _m = m;
        var actionButton = document.getElementById("action");
        if (actionButton) {
            var buttonId = "action";
             if (actionButton.attachEvent) {                
                actionButton.attachEvent("onclick", _onActionClick(buttonId));
            }
        }

var _onActionClick = function (buttonId) {
        alert("3");
}

在这里,我得到警报3。

但是,使用此代码,我不会收到警报3。

var init = function (m) {
        _m = m;
        var actionButton = document.getElementById("action");
        if (actionButton) {
            var buttonId = "action";
             if (actionButton.attachEvent) {                
                actionButton.attachEvent("onclick", _onActionClick);
            }
        }

var _onActionClick = function (){
        alert("3");
}

有人可以告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

onclick需要一个功能。您使用_onActionClick(buttonId)的返回值undefined

// no good!
actionButton.attachEvent("onclick", _onActionClick(buttonId));

尝试使用实际功能

actionButton.attachEvent("onclick", function(event) {
  _onActionClick(buttonId)
})

或者您可以用咖喱形式定义_onActionClick

var _onActionClick = function(buttonId) {
  return function(event) {
    console.log(buttonId, event)
  }
}

// now when you call _onActionClick(buttonId) it will return a function ...
actionButton.attachEvent("onclick", _onActionClick("action"))