【发布时间】:2018-01-30 13:30:59
【问题描述】:
给定这样的 DOM 结构:
<div>
<div>
<span>
<img/>
<i>
<span></span>
<meter></meter>
</i>
<a><span></span></a>
</span>
</div>
<nav>
<form>
<input/>
<button></button>
</form>
</nav>
</div>
想知道你是如何接受它,然后返回一个包含所有选择器的平面数组:
[
'div > div > span > img',
'div > div > span > i > span',
'div > div > span > i > meter',
'div > div > span > a > span',
'div > nav > form > input',
'div > nav > form > button'
]
我的尝试没有成功:
function outputSelectors(array, node) {
var tag = node.tagName
array.push(tag)
for (var i = 0, n = node.children.length; i < n; i++) {
var child = node.children[i]
outputSelectors(array, child)
}
}
outputSelectors([], document.body.children[0])
不知道从这里去哪里。
【问题讨论】:
-
你只想要叶子节点的选择器吗?
-
是的,只有叶节点。
-
^ 我只是想把它链接起来。使用该代码获取从
document.querySelectorAll("*")返回的每个元素的路径 -
我想知道如何做算法,而不是使用内置方法。
标签: javascript arrays combinations