javascript - 如何在原生 JavaScript 中实现 'toggle class' 函数?

标签 javascript

此函数应在文档中搜索具有值为“graphicDesign”的“data-info”属性的任何元素,然后在这些元素上切换类“hideMe”。

它在控制台中返回正确数量的元素,但在 classList 切换时中断。

我尝试过其他方法,例如按类名查找元素然后切换,但这也不起作用。

function toggleGraphicDesign() {
    let graphicDesignElements = document.querySelectorAll('[data-info="graphicDesign"]');
    console.log(graphicDesignElements.length);

    graphicDesignElements.classList.toggle('hideMe');

}

最佳答案

querySelectorAll() 返回一个 NodeList 而不是单个元素。根据 MDN

The Document method querySelectorAll() returns a static (not live) NodeList representing a list of the document's elements that match the specified group of selectors.

您需要使用 forEach() 遍历所有元素并切换每个元素的类。

function toggleGraphicDesign() {
    let graphicDesignElements = document.querySelectorAll('[data-info="graphicDesign"]');
    console.log(graphicDesignElements.length);
    graphicDesignElements.forEach(x => x.classList.toggle('hideMe')) 
}

关于javascript - 如何在原生 JavaScript 中实现 'toggle class' 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56185462/

相关文章:

javascript键检测不添加最新字符

javascript - 调试 PrimeFaces JS Ajax

javascript - 有没有任何API或Rails gem可以提取所有股票的主列表?

javascript - 如何使用模型中的函数表达式将函数动态绑定(bind)到 ng-click

javascript - 带有渐变和自定义字体的文本

javascript - 上传到服务器后水平 slider 无法正常工作

javascript - JS Prototype 按类获取元素?

javascript - 在 Ember js 中,如何在单元测试中创建或模拟 hasMany 关系

javascript - html 下拉菜单在 firefox 中不起作用,在旧版本的 IE 中一切都是错误的

javascript - JavaScript FileReader 中 readAsDataURL() 与 readAsArrayBuffer() 和 readAsText() 的区别