2016-08-24 90 views
0

我有以下內容的頁面:如何在按鈕上設置回調?

<body> 
    <div id="container"> 
     <p> 
      <input id="myButton" type=button onclick=window.open('LandingPage.html'); value="Launch Search App"> 
     </p> 
    </div> 

    <script> 
     function callback(msg) { console.log(msg); } 
     myButton.addEventListener('click', callback(msg)); 
    </script> 
</body> 

此頁顯示一個按鈕,當按下時啓動用戶執行一些搜索和數據處理功能的第二頁。

此頁面上的addEventListener旨在將回調函數添加到按鈕的onClick事件中。我的意圖是當用戶點擊按鈕啓動輔助頁面並讓第一頁等待輔助頁面發送對回調的響應時設置回調。

當我按原樣運行上面的代碼時,我收到一條消息,指出msg未定義。輔助頁面應該用msg響應回調,所以在這種情況下,是的,msg是未定義的。

爲了在按鈕的點擊事件上設置回調函數,我需要做些什麼?

+0

'setTimeout'的稱號是一個紅色的鯡魚,問題是相同的,所以一定要閱讀另一個問題的答案。 – zzzzBov

回答

1

您需要將函數引用設置爲參數而不是執行結果。

<script> 
    function callback() { console.log(msg); } 
    myButton.addEventListener('click', callback); 
</script> 


或撥打匿名函數中的函數。

<script> 
    function callback(msg) { console.log(msg); } 
    myButton.addEventListener('click',function(){ 
     callback('msg'); 
    }); 
</script> 
0

myButton.addEventListener('click', callback(msg)); 

應該

document.getElementById("myButton".addEventListener('click', callback(msg)); 

檢查控制檯