2015-04-12 131 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