创建动态数组Javascript

时间:2009-10-21 12:52:49

标签: javascript arrays loops

你好我想在2 for for循环中用javascript创建一个数组

var i;
    var a;
    var total       = document.getElementsByName('qm[7]')   
    var creativity  = document.getElementsByName('qm[0]');
    var design      = document.getElementsByName('qm[1]');
    var text        = document.getElementsByName('qm[3]');
    var motivation  = document.getElementsByName('qm[5]');
    var depth       = document.getElementsByName('qm[6]');
    var usefulness  = document.getElementsByName('qm[8]');
    var research    = document.getElementsByName('qm[9]');

ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);

for(i=0; i < ratingArray.length;i++)
{

    for(a=0; a < ratingArray[i].length;a++)
    {
        if(ratingArray[i][a].checked == true)
        {

             rateArray = new Array(ratingArray[i][a].value);
        }    
    }

}

如果我返回byteArray,它只给出了第一个元素吗?

4 个答案:

答案 0 :(得分:8)

每次找到一个已检查的元素时,你都会覆盖rateArray - 我怀疑你是想要追加它:

var ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);
var rateArray = new Array();

for(i=0; i < ratingArray.length;i++)
{

        for(a=0; a < ratingArray[i].length;a++)
        {
                if(ratingArray[i][a].checked == true)
                {

                         rateArray.push(ratingArray[i][a].value);
                }        
        }

}

答案 1 :(得分:2)

创建一个新数组并将所选值推送到新数组。

数组函数的详细描述

Manipulating JavaScript Arrays

var ratingArray = new Array(total,creativity,design,text,motivation,depth,usefulness,research);

var selectedValArray = [];

for(i=0; i < ratingArray.length;i++)
{

        for(a=0; a < ratingArray[i].length;a++)
        {
                if(ratingArray[i][a].checked == true)
                {

                         selectedValArray.push ( ratingArray[i][a].value );
                }        
        }

}

答案 2 :(得分:0)

声明

document.getElementsByName('qm[7]')

不起作用。没有可以具有名称qm[7]的元素。你的意思是你的阵列吗?在这种情况下,删除引号,在这些语句之前初始化数组,并用您要选择的元素的名称填充它。

函数getElementsByName返回一个元素数组。要使用此数组,您需要选择其中的项目。即:

var elems = document.getElementsByName("body");
var myBody = elems[0];

你在for循环中正确地做到了。

更新:展开的部分,并在getElementsByTagName上添加说明

答案 3 :(得分:0)

在此行中,您每次都会创建一个新数组:

rateArray = new Array(ratingArray[i][a].value);

所以你必须将元素推入数组,而不是每次都删除最后一个版本时创建一个新元素。

 var rateArray =[]

for(i=0; i < ratingArray.length;i++)
{

        for(a=0; a < ratingArray[i].length;a++)
        {
                if(ratingArray[i][a].checked)
                {

                         rateArray.push(ratingArray[i][a].value);
                }        
        }

}