为何鼠标click事件无法使用event参数?键盘与鼠标事件代码对比
关于click事件能否使用event参数的解答
click事件完全可以使用event参数,你看到的老师代码只是没声明这个参数而已
不管是keypress还是click这类DOM事件,浏览器在触发事件回调时,都会自动把事件对象(Event)作为第一个参数传递给回调函数,和事件类型无关:
看老师的keypress实现代码:
document.addEventListener("keypress", function(event) { // 这里通过event参数获取键盘事件的细节,比如按下的键event.key });这里显式声明了
event参数,用来接收浏览器传递的事件对象。再看click的代码:
document.addEventListener("click", function(){ var drum = this.innerHTML; });这段代码只是没在回调里声明
event参数,但不代表事件对象不存在。如果你需要使用,直接给回调函数加上event参数即可:document.addEventListener("click", function(event){ var drum = this.innerHTML; // 现在可以通过event获取点击事件的细节,比如点击的元素event.target、点击坐标event.clientX等 });
另外,老师代码里用this.innerHTML,这里的this在事件回调中默认指向触发事件的元素,和event.target作用类似,但event对象能提供更多事件相关的细节信息,比如按键状态、事件传播阶段等。
内容的提问来源于stack exchange,提问作者sachin tiwari
相关产品推荐
相关产品推荐

