2009-10-21 54 views
2

你好,我想创建Java脚本一个数组循环创建动态数组的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); 
     }  
    } 

} 

如果withing 2我返回rateArray它只是给人的第一元素的任何想法?

+1

该脚本正在做你想做的事情。你想创建什么?一个包含所有选中项目的1D数组? – 2009-10-21 12:54:55

回答

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

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

} 
0

声明

document.getElementsByName('qm[7]') 

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

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

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

你在for-loops中正确地做到了这一点。

更新:扩张部分和的getElementsByTagName

补充解释
0

在这你每次创建一个新的Array:

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

所以你必须把元素推到th e数组,而不是每次创建一个新的数组也删除最后一个版本。

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

}