如何使用循环创建一个数组,该循环包含使用javascript在表单标记内输入的名称属性。
到目前为止,这是我的代码,但它似乎并没有起作用,我看了其他类似的问题也无济于事。
<script type="text/javascript">
var inputnames[];
for (var i = 0; i < document.getElementsByTagName('input').length; i++)
{
inputnames[document.getElementsByTagName("input")[i].name]
};
document.write(inputnames)
</script>
答案 0 :(得分:2)
问题是您实际上没有将值添加到数组中。改变
inputnames[document.getElementsByTagName("input")[i].name]
到
inputnames.push(document.getElementsByTagName("input")[i].name)
答案 1 :(得分:0)
首先,您需要获取元素列表。 比你可以迭代它们。
每次迭代都不要查询DOM。如果您不期望DOM突变,您可以获得它一次并迭代它。
var inputnames = [];
var elems = document.getElementsByTagName('input');
for (var i = 0; i < elems.length; i++) {
inputnames.push(elems[i].name);
};
document.write(inputnames)
<input name="first" type="text" />
<input name="second" type="radio" />
答案 2 :(得分:0)
<script type="text/javascript">
var inputnames=[];
for (var i = 0; i < document.getElementsByTagName('input').length; i++)
{
inputnames.push(document.getElementsByTagName("input")[i].name);
};
alert(inputnames);
</script>
答案 3 :(得分:0)
非常接近,我不会在那里使用document.write
,不知道你想做什么,但是这会将它记录在控制台中。
var inputnames = [];
for (var i = 0; i < document.getElementsByTagName('input').length; i++) {
inputnames.push(document.getElementsByTagName("input")[i].name);
}
console.log(inputnames);
这是另一种选择
var inputnames = [];
for (var item of document.getElementsByTagName('input')) {
inputnames.push(item.name);
};
console.log(inputnames);
备用2:使用map.call来处理它是一个数组。
var inputnames = [];
var nodelist = document.getElementsByTagName('input');
Array.prototype.map.call( nodelist, function(n){
inputnames.push(n.name);
});
Alternate 3只获取带有name属性的输入并按下那些(避免数组中的空白)
var inputnames = [];
var named = document.querySelectorAll("input[name]");
Array.prototype.map.call( named, function(n){
inputnames.push(n.name);
});