假设我执行以下操作:
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(深度第一次搜索)的方式遍历它,在这种方式中,我能保证完全平坦的节点吗?
答案 0 :(得分:1)
&#39; elems的&#39;将是元素对象的非实时NodeList。遍历将是DFS(深度优先搜索)
答案 1 :(得分:0)
它更多地是您希望如何实现javascript变量和方法的实现者的选择。如果指定一个等于div和通配符的变量,您将返回被识别的所有内容,包括div中的Null。通配符可以作为一个不分青红皂白的捕获。尝试运行引用elem变量的函数时,尝试一下并查看控制台中的结果。
答案 2 :(得分:0)
它将列出div中的所有元素,而不仅仅是直接后代(select
)。但是,不会有任何层次结构,列表将被展平,以便任何深度的所有元素都可以立即使用。
响应看起来像这样(NodeList
对象是&#39;类似数组&#39;):
NodeList [ select, option, option, option, optgroup, option, option, option ]