为了账号安全,请及时绑定邮箱和手机立即绑定

关于querySelectorAll()什么时候取到的不是DOMlist?

关于querySelectorAll()什么时候取到的不是DOMlist?

子衿沉夜 2019-03-22 22:15:15
我看到某插件里有写:判断是否是DOMlist和封装document.querySelectorAll的函数,如下// 是否是 DOM Listfunction isDOMList(selector) {    if (!selector) {        return false;    }    if (selector instanceof HTMLCollection || selector instanceof NodeList) {        return true;    }    return false;}// 封装 document.querySelectorAllfunction 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>
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

哪个插件,发来看看?

MDN上的querySelectorAll都明确写了返回Nodelist..


查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 710 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信