[英]javascript toggle click is not working in addEventListener
[英]JavaScript addEventListener not working with mobile toggle menu
此JavaScript代码不起作用。
<div class="container">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
let mobile = document.querySelector(".container");
mobile.addEventListener("click", myFunction);
function myFunction(x) {
x.classList.toggle("change");
}
但是此JavaScript代码运行良好。
<div class="container" onclick="myFunction(this)">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
function myFunction(x) {
x.classList.toggle("change");
}
第一个代码有什么问题。 请帮我解决这个问题。
Event接口的target属性是对调度事件的对象的引用。 可以使用event.target属性来实现事件委托。 将同一事件处理程序附加到多个元素时,event.currentTarget很有用。
将功能修改为→
function myFunction(x) {
x.currentTarget.classList.toggle("change");
}
第一个函数中的x
变量实际上是一个事件变量,而不是.container
元素本身。
要访问.container
元素,您需要将代码调整为以下内容:
function myFunction(x) {
x.currentTarget.classList.toggle("change");
}
currentTarget
引用click事件所源自的元素。
对于addEventListener
,功能签名为myFunction(/*Event obj*/ e)
。 你也可以使用this
里面来访问目标元素。 有点喜欢。
let mobile = document.querySelector(".container"); mobile.addEventListener("click", myFunction); function myFunction(e) { //toggle whole container this.classList.toggle("change"); //or toggle each child //e.target.classList.toggle('change'); }
.change { background: green }
<div class="container"> <div class="bar1">bar1</div> <div class="bar2">bar2</div> <div class="bar3">bar3</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.