我想在循环后重新将数组重新打包为数组。我的代码是这样的。
HTML
<input class="btn" type="submit" value="Windows"><br>
<input class="btn" type="submit" value="Linux">
的Javascript
var btn = document.getElementsByClassName('btn');
for(i=0; i<btn.length; i++){
var a = [btn[i].value];
document.write(a.indexOf("Windows")); //return 0
}
上面的代码它不起作用。我想将btn.value重新打包到var a然后可以通过indexOf访问以返回值索引。
答案 0 :(得分:0)
你正在重置循环
var btn = document.getElementsByClassName('btn');
var a = [];
for(i=0; i<btn.length; i++){
a.push(btn[i].value);
console.log(a[i]);
}
document.write(a[a.indexOf("Windows")]);
工作小提琴
答案 1 :(得分:0)
DOM方法getElementsByClassName返回一种名为HTMLCollection的伪数组。 我想你要问的是如何改变btn的索引值。 要访问btn上的数组方法,并将新值写入btn,请将btn转换为true数组:
btn = Array.prototype.slice.call(document.getElementsByClassName('btn'), 0);
答案 2 :(得分:0)
将数组索引更改为0而不是1. a [0]
var btn = document.getElementsByClassName('btn');
var a = [];
for(i=0; i<btn.length; i++)
{
a = [btn[i].value];
document.write(a[0]);
}
其他解决方案
var btn = document.getElementsByClassName('btn');
var a = [];
for(i=0; i<btn.length; i++)
{
a.push(btn[i].value);
document.write(a[i]);
}
答案 3 :(得分:0)
您总是替换a
数组。你必须这样做:
var btn = document.getElementsByClassName('btn'),
a = new Array();
for(var i = 0; i < btn.length; i++) {
a.push(btn[i].value);
console.log(a[i]);
}
document.write('The second value of a is: ' + a[1]);
请注意,如果您在循环中使用document.write()
,则内容将替换为您的文字,第二个按钮将不再可用。