创建一个输入名称属性数组Javascript

时间:2017-08-16 19:52:35

标签: javascript html arrays

如何使用循环创建一个数组,该循环包含使用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>

4 个答案:

答案 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);
});