【发布时间】:2012-11-20 09:03:11
【问题描述】:
距离我上一次做 JavaScript 已经有一段时间了,但是学校强迫我们做一个 JavaScript 项目。所以我在这里,做一个简单的问答游戏。相处得很好,但我遇到了一些可能非常简单的问题。
var useranswers = new Array();
var imgArray = new Array();
var answered = 0;
var currentQuestion = 0;
function renderQuizViaArray()
{
document.writeln('<h1>' + questions[currentQuestion] + '</h1>');
for(i=0; i < choices[currentQuestion].length; i++)
{
document.writeln('<input type="radio" name="answer_' + currentQuestion + '" value="1" id="answer_' + currentQuestion + '_' + i + '" class="question_' + currentQuestion + '" onclick="submitAnswer(' + currentQuestion + ', this, \'question_' + currentQuestion + '\', \'label_' + currentQuestion + '_' + i + '\')" /><label id="label_' + currentQuestion + '_' + i + '" for="answer_' + currentQuestion + '_' + i + '"> ' + choices[currentQuestion][i] + '</label><br />');
}
document.write('<input type="submit" value="NEXT" onclick="nextQuestion()" />');
}
function nextQuestion()
{
currentQuestion++;
renderQuizViaArray();
}
每当我点击“NEXT”按钮时,它都会从一个数组中加载第二个问题(元素[1])以及另一个数组的答案到屏幕上。但页面仍处于无限加载状态,Firebug 给出消息:“重新加载以激活窗口控制台”
有人吗?
【问题讨论】:
-
不要使用
document.write如果必须,只需将该 HTML 连接到 body 标签的innerHTML属性值。此外,这不是无限循环。 -
choices[currentQuestion]的内容是什么?不应该是i < choices.length吗?可能是 for 循环产生了一个无限循环。 @Asad 除了innerHTML也是邪恶的事实;) -
不不,choices[currentquestion] 是一个字符串,所以它是正确的
-
@Cerbrus 这取决于选择的价值是什么。如果
choices[index]是一个数组(或任何其他有长度的),那么一切都很好。其实即使没有length属性也不会有死循环,因为i<undefined == true对于所有的整数。 -
复制问题的 jsfiddle 肯定会有所帮助。
标签: javascript arrays button firebug