美文网首页
document.querySelectorAll遍历&

document.querySelectorAll遍历&

作者: Tauruse | 来源:发表于2018-02-28 11:54 被阅读63次

    前言

    在线练习js代码时,给一系列元素绑定点击事件,发现document.querySelector()不能直接添加点击事件,会报错(可能是因为jQuery用多了,限制了我的想象力...)

    参考资料

    MDN:querySelector
    MDN:ParentNode

    注意MDN:ParentNode中的描述:

    ParentNode.querySelector():返回以当前元素为根元素,匹配给定选择器的第一个元素Element

    ParentNode.querySelectorAll():返回一个NodeList,表示以当前元素为根元素的匹配给定选择器组的元素列表

    这就是为啥querySelector()可以直接加点击事件,而querySelectorAll()不能直接加点击事件的原因了;

    同时,ParentNode.querySelectorAll()的结果是NodeList数组,但是又不是一般的js数组(Array),所以也不能直接调用Array的方法。

    正确的使用方式

    借助Array的forEach方法进行遍历,对每个Element进行事件绑定

    Array方法的使用

    这里以forEach函数为例

    • 正常方式
    [1,2,3].forEach(function(item,index,input){
      console.log(item);
    });
    
    • 其他函数借用
    Array.prototype.forEach.call([1,2,3],function(item,index,input){
        console.log(item);
    });
    

    或者

    [].forEach.call([1,2,3],function(item,index,input){
        console.log(item);
    });
    

    querySelectorAll的forEach遍历

    [].forEach.call(color_btn,function(item,index,input){
      item.addEventListener('click',()=>(alert("text")));
    });
    

    或者是

    Array.prototype.forEach.call(color_btn,function(item,index,input){
      item.addEventListener('click',function(){
        alert("text");
      });
    });
    

    相关文章

      网友评论

          本文标题:document.querySelectorAll遍历&

          本文链接:https://www.haomeiwen.com/subject/dajbxftx.html