2016-07-07 11 views
0

ボタンにイベントをアタッチしたいと思います。ユーザーがクリックすると、アラートが表示されます。しかし、ここでは、ユーザーがクリックしなくても、警告が表示されます。JavaScriptが他の機能を理由なしに呼び出す

JSファイル: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"); 
} 

誰かが、私をさせることができます。ここ

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.

取得しかし、どこが間違っているのか知っていますか?

+0

を定義することができますを使用してみてくださいです_onActionClick(buttonId)の戻り値を使用していますブラウザは '.attachEvent'をサポートしていません。恐らく標準の' .addEventListener'に落ちる可能性がありますより良い成功をお届けします。 – spender

答えて

0

onclickには機能が必要です。あなたは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")) 
関連する問題