2016-08-24 93 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)); 

检查控制台