账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于querySelectorAll()什么时候取到的不是DOMlist?
    53
    0

    我看到某插件里有写:判断是否是DOMlist和封装document.querySelectorAll的函数,如下

    // 是否是 DOM List
    function isDOMList(selector) {
        if (!selector) {
            return false;
        }
        if (selector instanceof HTMLCollection || selector instanceof NodeList) {
            return true;
        }
        return false;
    }
    
    // 封装 document.querySelectorAll
    function querySelectorAll(selector) {
        var result = document.querySelectorAll(selector);
        if (isDOMList(result)) {
            return result;
        } else {
            return [result];
        }
    }

    然后我就奇怪,为什么会要重新封装一次querySelectorAll(),然后我写了一个Demo发现不论是怎样,querySelectorAll()取到的永远都是DOMlist,想问一下这个封装判断是否是DOMlist的作用是什么,或者说什么情况下,我的demo中会返回false

    下面给出我写的demo

    <body>
    <ul>
      <li class="nobe">a</li>
      <li>b</li>
      <li>c</li>
      <li>d</li>
      <li class="nobe">e</li>
    </ul>
    <button onclick="checkDom()">点击寻找li</button>
    <script type="text/javascript">
      function isDOMList(selector) {
        if (!selector) {
          return false;
        }
        if (selector instanceof HTMLCollection || selector instanceof NodeList) {
          return true;
        }
        return false;
      }
    
      function qSA(selector) {
        var result = document.querySelectorAll(selector);
        if (isDOMList(result)) {
          console.log('是DOMlist');
          return result;
        } else {
          console.log('不是DOMlist');
          return [result];
        }
      }
    
      function checkDom() {
        console.log(qSA('.nobe'));
      }
    </script>
    </body>
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部