document.querySelectorAll和document.getElementsByClassName事件处理

Kawnah

我无法document.querySelectorAll通过返回结果中每个项目的循环将事件处理程序分配给元素我不知道我在做什么错。看起来像这样:

// divs to show/hide
const mobileNavOpen = document.querySelector(".mobile-nav-open");
const mobileNavClose = document.querySelector(".mobile-nav-close");

// mobile menu/search overlay
const mobileNavItems = document.getElementById("global-nav--mobile");
const searchOverlay = document.getElementById("search-overlay");

// search unit open/close buttons

// this line I think is broken
const navSearch = document.querySelectorAll(".global-nav__search-icon");

// this one doesn't work either
const navSearch = document.getElementsByClassName("global-nav__search-icon");

const searchCloseButton = document.querySelector(".search-overlay__close");


function mobileOpen(event) {
  event.preventDefault();
  mobileNavItems.classList.add("show");
}

function mobileClose(event) {
  event.preventDefault();
  mobileNavItems.classList.remove("show");
}

function searchOpen(event) {
  event.preventDefault();
  searchOverlay.classList.add("show");
}

function searchClose(event) {
  event.preventDefault();
  searchOverlay.classList.remove("show");
}

mobileNavOpen.addEventListener("click", mobileOpen);
mobileNavClose.addEventListener("click", mobileClose);

for (var i = 0; i < navSearch.length; i++) {
  navSearch.addEventListener("click", searchOpen);
}

searchCloseButton.addEventListener("click", searchClose);

标记:

<nav id="global-nav">
    <a href="#" class="mobile-nav-open">+</a>
    <a class="global-nav__logo" href="/"><img src="/images/logo.png" alt=""></a>
    <img class="global-nav__search-icon mobile-search" src="images/search-icon.png" alt="" style="height: 32px;">
    <ul class="global-nav__items">
      <li><a href="/item1">item 1</a></li>
      <li><a href="/item2">item 2</a></li>
      <li> <a href="#">item 3</a> </li>
      <li> <a href="#">item 4</a> </li>
    </ul>
    <ul class="global-nav__items" id="login-signup">
      <li class="global-nav__search-icon"><img src="images/search-icon.png" alt=""></li>
      <li><a href="#">Log In</a></li>
      <li><a href="#">Sign Up</a></li>
    </ul>
</nav>

我找到了这个答案:JS错误对象没有方法addEventListener,正在实现示例,但仍然有问题。

这应该很容易,我在做什么错?

Skwal

您在循环([i])中缺少索引

for (var i = 0; i < navSearch.length; i++) {
    navSearch[i].addEventListener("click", searchOpen);
}

注意:querySelectorAllgetElementsByClassName应该都可以解决问题。它们分别返回NodeList或HTMLCollection,但是它们都像您一样支持简单的for循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

触发变更事件或修复querySelectorAll / document.getElementsByClass名称

来自分类Dev

问题与document.getElementsByClassName

来自分类Dev

循环 document.getElementsByClassName

来自分类Javascript

jQuery与document.querySelectorAll

来自分类Dev

javascript document.querySelectorAll

来自分类Dev

替换 document.querySelectorAll

来自分类Dev

Sizzle和document.querySelectorAll有什么区别

来自分类Dev

事件委托和window与window.document

来自分类Dev

document.querySelectorAll('')如何运作?

来自分类Dev

Angular 6单击document.getElementsByClassName live html集合上的事件

来自分类Dev

如何存储和打印document.getElementsByClassName中的元素?

来自分类Dev

我可以通过使用document.getElementsByClassName()来处理React组件吗?

来自分类Dev

在$(document)上附加很多事件处理程序是不好的吗?

来自分类Dev

111 是有效的 HTML id 属性还是 document.querySelector() 和 document.querySelectorAll() 正确抛出语法错误?

来自分类Dev

在Testcafe中使用document.getElementsByClassName

来自分类Dev

document.getElementsByClassName('query'); 附加项目?

来自分类Dev

document.getElementsByClassName()数组中元素的顺序

来自分类Dev

document.getElementsByClassName()无法正常工作?

来自分类Dev

用于JavaScript创建的元素的document.getElementsByClassName

来自分类Dev

document.getElementsByClassName('name')的长度为0

来自分类Dev

javascript document.getElementsbyClassName 不是函数

来自分类Dev

使用 document.querySelectorAll 根据其类和内部文本查找特定节点

来自分类Dev

document.querySelectorAll('a [id =“ *”]'); 和通配符或正则表达式?

来自分类Dev

Javascript弹出窗口-需要创建类并将绑定事件绑定到document.getElementsByClassName返回的每个元素

来自分类Dev

表单提交后的document.querySelectorAll

来自分类Dev

如何document.querySelectorAll()仅检查项目

来自分类Javascript

JavaScript:DOM加载事件,执行序列和$(document).ready()

来自分类Dev

嵌套$(document).ready()和$(window).load()事件之间的区别

来自分类Dev

DOMContentLoaded 和 document.onload 事件是否相同?

Related 相关文章

  1. 1

    触发变更事件或修复querySelectorAll / document.getElementsByClass名称

  2. 2

    问题与document.getElementsByClassName

  3. 3

    循环 document.getElementsByClassName

  4. 4

    jQuery与document.querySelectorAll

  5. 5

    javascript document.querySelectorAll

  6. 6

    替换 document.querySelectorAll

  7. 7

    Sizzle和document.querySelectorAll有什么区别

  8. 8

    事件委托和window与window.document

  9. 9

    document.querySelectorAll('')如何运作?

  10. 10

    Angular 6单击document.getElementsByClassName live html集合上的事件

  11. 11

    如何存储和打印document.getElementsByClassName中的元素?

  12. 12

    我可以通过使用document.getElementsByClassName()来处理React组件吗?

  13. 13

    在$(document)上附加很多事件处理程序是不好的吗?

  14. 14

    111 是有效的 HTML id 属性还是 document.querySelector() 和 document.querySelectorAll() 正确抛出语法错误?

  15. 15

    在Testcafe中使用document.getElementsByClassName

  16. 16

    document.getElementsByClassName('query'); 附加项目?

  17. 17

    document.getElementsByClassName()数组中元素的顺序

  18. 18

    document.getElementsByClassName()无法正常工作?

  19. 19

    用于JavaScript创建的元素的document.getElementsByClassName

  20. 20

    document.getElementsByClassName('name')的长度为0

  21. 21

    javascript document.getElementsbyClassName 不是函数

  22. 22

    使用 document.querySelectorAll 根据其类和内部文本查找特定节点

  23. 23

    document.querySelectorAll('a [id =“ *”]'); 和通配符或正则表达式?

  24. 24

    Javascript弹出窗口-需要创建类并将绑定事件绑定到document.getElementsByClassName返回的每个元素

  25. 25

    表单提交后的document.querySelectorAll

  26. 26

    如何document.querySelectorAll()仅检查项目

  27. 27

    JavaScript:DOM加载事件,执行序列和$(document).ready()

  28. 28

    嵌套$(document).ready()和$(window).load()事件之间的区别

  29. 29

    DOMContentLoaded 和 document.onload 事件是否相同?

热门标签

归档