2009-10-21 61 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); 
       }   
     } 

}