循环后重新包装数组再次成为数组

时间:2014-07-16 08:37:36

标签: javascript

我想在循环后重新将数组重新打包为数组。我的代码是这样的。

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访问以返回值索引。

4 个答案:

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

工作小提琴

http://jsfiddle.net/janLy/4/

答案 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(),则内容将替换为您的文字,第二个按钮将不再可用。

以下是演示:http://jqversion.com/#!/XwJIEUt