我如何第二次更改getElementById?

时间:2013-01-03 16:43:26

标签: javascript getelementbyid overlapping

我正在创建一个多项选择题,要求用户点击答案(单选按钮)。如果用户在选择答案之前单击了答复答案按钮,则会提示他选择答案。这很好用。但是,如果用户随后选择了错误答案并单击了“检查答案”按钮,则会在上一个提示上显示相应的响应。我尝试更改getElementById以提示显示“”,但它不起作用。任何帮助将不胜感激。

for (i = 0; i < len; i++) {
    if (document.Questions.Q_ans[i].checked == false) {
        document.getElementById("reply_b").innerHTML = "Select answer before continuing.";
    }
}

if (document.getElementById('answer_b').checked || document.getElementById('answer_c').checked) {
    document.getElementById("reply_a").innerHTML = incorrect;
    document.getElementById("reply_b").innerHTML = "";
}

3 个答案:

答案 0 :(得分:0)

此行失败,因为incorrect应该被定义为变量,或者它应该用引号括起来:

document.getElementById("reply_a").innerHTML = "incorrect"; // <-- Should be in quotes

所以你的脚本永远不会执行该行。

答案 1 :(得分:0)

正如@brian buck所说,你的脚本不会在incorrect语句之后执行,该语句应该是一个已定义的变量或用引号括起来(以字符串形式执行)。你的脚本默默地失败了,基本上什么也没做(至少,你看不到任何东西)。

我还建议在这里做一些事情:

  • 确保在循环中使用var i以避免范围错误
  • 您的第一次循环检查对我来说似乎有点奇怪:对于未检查的每个(假定的)可能答案,您显示相同的错误。它并不重要,但您的脚本每次都会执行一次而不是一次。你可以说,当你发现某个地方已经检查了一个答案时,你就可以切换一个布尔值,并根据这个布尔值的值在末尾分配你的错误语句。但是,对于那种情况,我的“裸体”JS有点生疏,我完全相信它有更好的解决方案!
  • 由于看起来您没有收到脚本失败的通知,我认为您不使用任何调试器。如果您在Web浏览器中执行JS,则可以使用嵌入式控制台。否则,有很多工具可以帮助你很多。我记得在开始玩JS的时候会失去我的头发,因为每当它不开心时它就会变得沉默......

答案 2 :(得分:0)

使用Jquery,将所有“document.getElementById('yourId')”替换为“$('#yourid')” 并且您必须为您的循环初始化var len

JS:

for (var i = 0; i < len; i++) {
    if (document.Questions.Q_ans[i].checked == false) {
        $("#reply_b").innerHTML = "Select answer before continuing.";
    }
}

if ($('#answer_b').checked || $('#answer_c').checked) {

    $("#reply_a").innerHTML = incorrect;
    $("#reply_b").innerHTML = "";      
}