尝试从数组中保存的输入集合中获取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'));
}
任何帮助都不值得赞赏
由于
答案 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)
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>