我正在用这一个撕裂头发,初学警报。
尝试使用直接JS而不是JQuery构建基本测验,没有太多运气。
我无法弄清楚如何正确循环单选按钮以检查用户选择。我很确定我的代码是正确的,但它不起作用。
有问题是由于.innerHTML生成的'name'因此在页面加载时技术上不存在吗?
这是一个JSFiddle:http://jsfiddle.net/AU2ve/
这是我的循环,就像我说的那样,我确定没问题。
// Check which answer selected (Test)
function checkAnswer() {
var answerChoices = document.getElementsByName('choices');
for (var j = 0; j < answerChoices.length; j++) {
if (answerChoices[i].checked) {
alert(answerChoices[i].value);
break;
}
}
}
正如我所说,我对此仍然很陌生,希望这是一个简单的解决方案。
由于
答案 0 :(得分:3)
您使用的是j
,而不是i
。
只需将answerChoices[i]
替换为answerChoices[j]
。
答案 1 :(得分:1)
正如其他人指出你有一个循环错误。
在更新选项之前,您必须checkAnswer();
。
然后你应该检查一下你是否还有更多问题:
if (typeof allQuestions[xNum - 1] !== "undefined") {
答案 2 :(得分:0)
更新了它。索引i和j是混合的。试试DEMO
for (var j = 0; j < answerChoices.length; j++) {
if (answerChoices[j].checked) {
alert(answerChoices[j].value);
break;
}
}
在渲染之前还要检查问题池的长度:
if (allQuestions.length > xNum - 1) {
HTML格式错误:
newHtml += '<label><input type="radio" name="choices" value="' + allQuestions[xNum - 1].choices[i] + '" />' + allQuestions[xNum - 1].choices[i] + '<label>';
正如您将注意到我还用标签包围您的输入:
<label><input type="radio" name="choices" value="David Cameron">David Cameron</label>
这样您就可以点击名称来选择收音机。