2015-04-12 128 views
-1

這是假設爲多個問題存儲選擇的答案。當我使用這個代碼時,它只檢查第一個問題並忽略其他問題。爲什麼我的循環在Javascript的循環中不工作?

for(i = 0; i < questions.length-1; i++){    
     radios = document.getElementsByName(questions[i]);    
      for (var t = 0; length < radios.length; t++) { 
       if (radios[t].checked) {       
        var qResults = JSON.parse(localStorage["qResults"]); 
        num = radios[t].value; 
        checked = num.toString(); 
        var temp = (id[0] + ";" + questions[i] + ";" + checked);  
        alert(temp); 
        qResults.push(temp); 
        localStorage["qResults"] = JSON.stringify(qResults); 
        } 

      } 
     alert("question finished"); 
    } 

回答

0

你的內循環是錯誤的。更改此:

for (var t = 0; length < radios.length; t++) { 

到:

for (var t = 0; t < radios.length; t++) { 

附註:我會建議你在循環之前讀取本地存儲和循環後寫回,而不是做它爲每個問題。

0

除了Guffa的修正,我覺得更有意義,如果你可以移動var qResultslocalStorage["qResults"]第二for循環之外:

 var qResults = JSON.parse(localStorage["qResults"]); 
    for loop I { 
     for loopII {} 
    } 

    localStorage["qResults"] = JSON.stringify(qResults); 
+0

這意味着,它會爲每個單選按鈕來完成。將它移到循環外部會更好,所以它只能進行一次。編輯:把它放在內部循環仍然意味着它是爲每個問題完成的。 – Guffa

+0

感謝更正@Guffa! – renakre