如何递归搜索DIV中的所有SPAN元素



我试图找到div中的所有SPAN元素,函数返回找到的SPAN的数组。

下面我做了一个递归函数,但它带来了43 SPAN:

function findRecursive(myElement, elementName, element) {
if (element == null){
element = {'element':null, 'array':[]}
}
if (element['element']) {
myElement = element['element']
}
if (element['array'] === undefined) {
element['array'] = []
}
var arr = element['array']
var els = myElement.getElementsByTagName(elementName)
for (let i = 0; i < els.length; i++) {
const e = els[i];
if (e.tagName == elementName) {
arr.push(e)
}
args = {'element':e, 'array': arr}
findRecursive(null, elementName, args)
}
return arr
}
var e = document.getElementById('main')
var result = findRecursive(e, 'SPAN')
console.log(result)
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="main">
<span>
<span>
<span>
<span>
<span>
mySpan1
</span>
</span>
</span>
<span>
<span>
mySpan2
</span>
</span>
</span>
</span>
</div>
</body>
</html>

这个代码有什么问题?我应该带7 SPAN

我想你可能杀过头了…;-(

document.querySelectorAll('div[id="main"] span');

了解有关querySelector和querySelectorAll 的更多信息

最新更新