views:

301

answers:

4

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?

+1  A: 

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

}
rahul
A: 

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. I.e.:

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

Abel
A: 

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

}
Greg
Thank you very much this worked fine for me have a nice day
streetparade
A: 

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

}
eskimoblood