为什么我的循环在Javascript的循环中不工作?
问题描述:
这是假设为多个问题存储选择的答案。当我使用这个代码时,它只检查第一个问题并忽略其他问题。为什么我的循环在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");
}
答
你的内循环是错误的。更改此:
for (var t = 0; length < radios.length; t++) {
到:
for (var t = 0; t < radios.length; t++) {
附注:我会建议你在循环之前读取本地存储和循环后写回,而不是做它为每个问题。
答
除了Guffa的修正,我觉得更有意义,如果你可以移动var qResults
和localStorage["qResults"]
第二for
循环之外:
var qResults = JSON.parse(localStorage["qResults"]);
for loop I {
for loopII {}
}
localStorage["qResults"] = JSON.stringify(qResults);
这意味着,它会为每个单选按钮来完成。将它移到循环外部会更好,所以它只能进行一次。编辑:把它放在内部循环仍然意味着它是为每个问题完成的。 – Guffa
感谢更正@Guffa! – renakre