Javascript querySelectorAll(' *')返回格式

时间:2015-06-17 19:04:07

标签: javascript html

假设我执行以下操作:

var elems = document.querySelectorAll('div *');

其中div是一些任意div,如下所示:

<div>
   <select>
      <option>Opt1</option>
      <option>Opt1</option>
      <option>Opt1</option>
      <optgroup>
          <option>Opt1</option>
          <option>Opt1</option>
          <option>Opt1</option>
      </optgroup>
   </select>
</div>

我现在的问题是,elems会是什么? Javascript标准是否指定了执行这些操作的方法,或者这只是留给实现者。

其他放置方式,Javascript如何遍历节点。它会以DFS(深度第一次搜索)的方式遍历它,在这种方式中,我能保证完全平坦的节点吗?

3 个答案:

答案 0 :(得分:1)

&#39; elems的&#39;将是元素对象的非实时NodeList。遍历将是DFS(深度优先搜索)

docs

答案 1 :(得分:0)

它更多地是您希望如何实现javascript变量和方法的实现者的选择。如果指定一个等于div和通配符的变量,您将返回被识别的所有内容,包括div中的Null。通配符可以作为一个不分青红皂白的捕获。尝试运行引用elem变量的函数时,尝试一下并查看控制台中的结果。

答案 2 :(得分:0)

它将列出div中的所有元素,而不仅仅是直接后代(select)。但是,不会有任何层次结构,列表将被展平,以便任何深度的所有元素都可以立即使用。

响应看起来像这样(NodeList对象是&#39;类似数组&#39;):

NodeList [ select, option, option, option, optgroup, option, option, option ]

MDN docs page