首页 > 解决方案 > 我的第一个代码不起作用,但我的第二个代码起作用。第一个有什么问题?

问题描述

我是 JavaScript 新手。我的代码有点问题。在代码中,我在 addEventListener 中设置了一个匿名函数作为事件函数,但它不起作用。

 target.addEventListener("click", x); //it does not work//

 var x= function(event){   
   console.log(event.target);  
 };

但是,如果我像第二个那样编写代码,那么它就可以工作。

var y= function(){  
  target.addEventListener("click", x); //but it works// 
}  

var x= function(event){  
  console.log(event.target);  
};  

y();

我不明白第一个有什么问题。

标签: javascriptfunctionaddeventlistener

解决方案


您需要在将函数分配给事件之前定义函数 - 正如您在第二个示例中所做的那样,在定义 x 之后执行 y()

var x = function(event) {
  console.log(event.target);
};

// or
// const x = event =>  console.log(event.target);

const target = document.getElementById("butX");

target.addEventListener("click", x); //it does work//
<button type="button" id="butX">Click</button>


推荐阅读