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

我看到某插件里有写:判断是否是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>


子衿沉夜
浏览 711回答 2
2回答

一只斗牛犬

哪个插件,发来看看?MDN上的querySelectorAll都明确写了返回Nodelist..
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript