DOM问题,不确定对象是否存在? JavaScript的

时间:2013-04-24 19:29:16

标签: javascript dom

我正在用这一个撕裂头发,初学警报。

尝试使用直接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;
        }
     }
 }

正如我所说,我对此仍然很陌生,希望这是一个简单的解决方案。

由于

3 个答案:

答案 0 :(得分:3)

您使用的是j,而不是i

只需将answerChoices[i]替换为answerChoices[j]

答案 1 :(得分:1)

正如其他人指出你有一个循环错误。

在更新选项之前,您必须checkAnswer();

然后你应该检查一下你是否还有更多问题:

if (typeof allQuestions[xNum - 1] !== "undefined") {

更新小提琴:http://jsfiddle.net/AU2ve/3/

答案 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>

这样您就可以点击名称来选择收音机。