addEventListener 'click' 事件无法识别点击且无法调用函数
addEventListener 'click' event not recognizing click and not calling function
编辑:删除了所有问题内容,因为我将 JavaScript 擦干净并从头开始,它有效。据我所知,我没有做任何与第一次不同的事情。我仍然不确定为什么它以前不工作,但现在可以工作了。请参阅下面的答案以了解有效的 addEventListener click/toggle 事件。
事件监听器的参数是事件。如果您想要附加事件侦听器的 元素 ,请引用事件的 currentTarget
。
function activateOffCanvasNav(e) {
e.currentTarget.classList.toggle('active');
}
如果您尝试执行 e.classList.toggle
,就像您目前正在做的那样,您将得到 TypeError,因为事件没有 classList
属性。
正在进行现场演示:
document.getElementById('hamburger-icon').addEventListener('click', activateOffCanvasNav);
function activateOffCanvasNav(e) {
console.log('here')
e.currentTarget.classList.toggle('active');
}
.active {
background-color: green;
}
<header>
<!-- small screens only -->
<div class="small-nav-header">
<a id="nav-toggle" href="#!">
<div id="hamburger-icon" class="hamburger-icon">
<div class="bar1">bar</div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</a>
</div>
</header>
编辑:删除了所有问题内容,因为我将 JavaScript 擦干净并从头开始,它有效。据我所知,我没有做任何与第一次不同的事情。我仍然不确定为什么它以前不工作,但现在可以工作了。请参阅下面的答案以了解有效的 addEventListener click/toggle 事件。
事件监听器的参数是事件。如果您想要附加事件侦听器的 元素 ,请引用事件的 currentTarget
。
function activateOffCanvasNav(e) {
e.currentTarget.classList.toggle('active');
}
如果您尝试执行 e.classList.toggle
,就像您目前正在做的那样,您将得到 TypeError,因为事件没有 classList
属性。
正在进行现场演示:
document.getElementById('hamburger-icon').addEventListener('click', activateOffCanvasNav);
function activateOffCanvasNav(e) {
console.log('here')
e.currentTarget.classList.toggle('active');
}
.active {
background-color: green;
}
<header>
<!-- small screens only -->
<div class="small-nav-header">
<a id="nav-toggle" href="#!">
<div id="hamburger-icon" class="hamburger-icon">
<div class="bar1">bar</div>
<div class="bar2"></div>
<div class="bar3"></div>
</div>
</a>
</div>
</header>