如何从数组中保存的输入对象获取id?

时间:2015-02-27 18:55:44

标签: javascript

尝试从数组中保存的输入集合中获取id但有困难。 HTML

<div id="searchData">
<input type="text" id="1" />
<input type="text" id="2" />
<input type="text" id="3" />
</div>

//jS

var searchRes = document.getElementById("searchData").getElementsByTagName("input");

for(x in searchRes){
  alert(x.getAttribute('id'));
}

任何帮助都不值得赞赏

由于

5 个答案:

答案 0 :(得分:1)

您的for循环错误。

for (x in searchRes)会为x提供以下值:0,1,2

你应该把它改成

for(x in searchRes){
  alert(searchRes[x].id);
}

答案 1 :(得分:1)

您的代码可以更改为此以实现此目的。您的for循环正在访问该Array对象上的键。使用Array原型函数map()会更容易。 <击>

<击>
var searchRes = document.getElementById("searchData").getElementsByTagName("input");

searchResults.map(function(inputElem) {
  return inputElem.id;
});

<击> 修改
 乔纳森抓住了我。 HTMLCollection不是数组。因此,在转换之前,您无法在其上调用Array函数。

var searchRes = document.getElementById("searchData").getElementsByTagName("input");
var searchInputs = Array.prototype.slice.call(searchRes);
searchInputs.map(function(inputElem) {
  return inputElem.id;
});

答案 2 :(得分:0)

javascript中的

for..in不会遍历这些项目。它遍历属性键。这不仅适用于数组,也适用于任何对象。

您可以使用该键访问实际值:

var searchRes = document.getElementById("searchData").getElementsByTagName("input");

for(var key in searchRes){
  alert(searchRes[key].getAttribute('id'));
}

答案 3 :(得分:0)

另一种方式:

for (var i=0; i < searchRes.length; i++){
    alert(searchRes.item(i).getAttribute('id'));
}

答案 4 :(得分:0)

当我尝试下面的新示例时,我会得到额外的未定义输出。知道为什么吗?我只有三个输入,为什么我会收到三个以上的警报?

  

由于

使用for循环对其进行排序,而不是for。希望它可以帮助某人。

 <div id="all">
First name: <input id="fname" type="text" name="fname"><br>
Last name: <input id="lname" type="text" name="lname"><br>
Age: <input id="age" type="text" name="lname"><br>
</div>



<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
 var x = document.getElementById('all').getElementsByTagName("input");
   for(prop in x){ 
  alert(x[prop].id);
}
}
</script>