我正在尝试使用JSON数据创建3个多项选择题的简单代码, 由于理解超出我的理解,所发生的是一个永恒的循环,其中最后一个问题一次又一次地写入页面直到它崩溃... 帮助和建议将受到高度赞赏。
var questions = {
"qestion":["what is bla?", "what is bla bla?", "what is bla bla bla?"],
"answer":[["aaa","bbb","ccc","ddd"], ["eee","fff","ggg","hhh"], ["zzz","xxx","yyy","www"]],
"correctAns":[1,2,3]};
String.prototype.format = function() {
var formatted = this;
for (i=0; i< arguments.length; i++) {
var regexp = new RegExp('\\{'+i+'\\}', 'gi');
formatted = formatted.replace(regexp, arguments[i]);
}
return formatted;
};
function writeQuestions() {
for (i=0 ;i<=2; i++) {
answerRdy = [];
qestionRdy = questions.qestion[i];
answerRdy[0] = questions.answer[i][0];
answerRdy[1] = questions.answer[i][1];
answerRdy[2] = questions.answer[i][2];
answerRdy[3] = questions.answer[i][3];
divID = "question-" + i;
writeAnswer = [];
writeAnswer[writeAnswer.length] = ("\n<div id='{0}'>\n<form method='post' onsubmit='return validate(this);'>\n").format(divID);
writeAnswer[writeAnswer.length] = ("<b>" + qestionRdy + "</b><br />\n");
for (n=0; n<=3; n++) {
writeAnswer[writeAnswer.length] = ("<input type='radio' name='answer' value='{0}' /> {1} <br />\n").format(n, answerRdy[n]);
}
writeAnswer[writeAnswer.length] = ("<input type='submit' value='Submit your answer'>\n</form>\n</div><!--{0}-->").format(divID);
joinQuestion = writeAnswer.join();
exp = /,/gi;
fullQuestion = joinQuestion.replace(exp, "");
$('#container').append(fullQuestion);
}
}
答案 0 :(得分:1)
可能因为你有两个for循环使用未声明的魔术全局变量“i”
for (i=0...
最有可能的地方
for (var i=0...
答案 1 :(得分:1)
我改变了你的循环来为迭代声明局部变量,并且还将终止长度与适当的对象相关联,这似乎就是诀窍。例如:
for (i=0 ;i<=2; i++) {
成为:
for (var i = 0, len = questions.answer.length; i < len; i++) {