2016-08-24 17 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> 

このページでは、クリックされたときには、ユーザは、いくつかの検索やデータ操作機能を行う第2のページを起動するというボタンが表示されます。

このページの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)); 

があなたのコンソールをチェックする必要があります

関連する問題