问题描述
var fieldsettags = document.getElementsByTagName('fieldset');
textareatags = new Array();
internalarray = new Array();
for (var x = 0; x < fieldsettags.length; x++) {
for (var y = 0; y < fieldsettags[x].childNodes.length; y++) {
if (fieldsettags[x].getElementsByTagName('textarea')[y]) {
internalarray.push(fieldsettags[x].getElementsByTagName('textarea')[y]);
}
}
textareatags.push(internalarray);
internalarray = [];
}
<fieldset>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
</fieldset>
我的文档中有很多fieldset标签,这里仅是一个例子,可以激发想象力。我想在数组中只有textarea元素。我要去哪里错了?记住每个字段集标记内的顺序和编号。的元素也不同。您是否建议任何其他获取方法?
解决方法
将看到的每个fieldset
散布到一个数组中,然后将该数组映射到它的每个textarea
后代:
const textareatags = [...document.querySelectorAll('fieldset')]
.map(fieldset => [...fieldset.querySelectorAll('textarea')]);
console.log(textareatags);
<fieldset>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
<legend>something</legend><textarea>something</textarea><span>somethings</span>
<div>something</div>
</fieldset>
,
您可能想要这样的东西:
const fieldSets= [...document.querySelectorAll('fieldset')];
const finalArray = [];
fieldSets.forEach((fieldSet) => {
const textAreas = [...fieldSet.querySelectorAll('textarea')];
finalArray.push(textAreas)
});
console.log(finalArray);