简体   繁体   中英

creating dynamic Arrays Javascript

Hello i want to create a array in java script withing 2 for loops

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);
        }    
    }

}

and if i return rateArray it just gives the first element any idea?

You're overwriting rateArray each time you find a checked element - I suspect you meant to append it instead:

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);
                }        
        }

}

Create a new array and push the selected values to the new array.

A detailed description of array functions

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 );
                }        
        }

}

The statement

document.getElementsByName('qm[7]')

will not work. There are no elements that can have the name qm[7] . Did you mean this to be your array? In that case, remove the quotes, initialize the array prior to those statements and fill it with the names of the elements you want to select.

The function getElementsByName returns an array of elements. To use this array, you need to select the items in it. Ie:

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

you do that correctly in your for-loops.

Update: expanded section and added explanation on getElementsByTagName

In this line you create an new Array every time:

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

So you have to push the elements in to the array instead of creating a new one every time thats also delete the last version.

 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);
                }        
        }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM