javascript - onclick() 操作没有响应

标签 javascript dom-events

我正在创建一个类似调查的页面。我使用三个基本的 JavaScript 函数,goNext(i),它隐藏某个 div 标签并显示下一个,goPrevious(i),它的作用几乎相同,但相反,和 answerExists(questionNumber) 检查是否所有单选按钮都被选中。从我创建 answerExists()goNext() 开始,我想 goPrevious() 也停止了响应。也许这与 onsubmit() 函数有关,但我无法弄清楚。这些是 JavaScript 函数:

function goNext(i) {
  document.getElementById("div" + i).style.display = 'none';
  document.getElementById("div" + (i + 1)).style.display = 'block';
}

function goPrevious(i) {
  document.getElementById("div" + i).style.display = 'none';
  document.getElementById("div" + (i - 1)).style.display = 'block';
}

function checkAnswers(questions) {
  var answers = new Array(questions);
  for(var i = 1; i <= questions; i++){
    answers[i-1] = false;
    var radio = document.getElementsByClassName('Radio' + i);
    for (var j=0; j < radio.length; j++) {
      if(radio[j].checked == true)
         alert(radio[j].value)answers[i-1] = true;
    }
    for (var i = 0; i < questions; i++){
      if(answers[i] == false){
        alert("Please answer all questions.");
        return false;
      }   
    }
    return true;
}

这是 HTML 表单:

<form id="content" action="getresults.jsp" method="post" onsubmit="return checkAnswers(2);">
    <div id="div1" style="display: block;">
        <strong>1. Question 1</strong><br><br>&nbsp;&nbsp;
        <input id="radio1" class="radio1" name="radio1" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="Answer1" /> 
        Answer1<br><br><br><br>
        <div class="auto-style1">
            <input name="next" onclick="goNext(1);" type="button" value="Next" />
        </div>
    </div>
    <div id="div2" style="display: none;">
        <strong>2. Question 2</strong><br><br>&nbsp;&nbsp;
        <input id="radio2" class="radio2" name="radio2" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="Answer 2" /> 
        Answer 2<br><br>&nbsp;&nbsp;
        <input id="radio2" class="radio2" name="radio2" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="dfgdgfdgf" /> 
        dgfgddgf<br><br><br><br>
        <div class="auto-style1">
            <input name="previous" onclick="goPrevious(2);" type="button" value="Previous" />&nbsp;
            <input name="submit" type="submit" value="Submit" />
        </div>
    </div>
</form>

它实际上都是动态创建的,但在我添加 checkAnswers() 函数之前它仍然有效。

最佳答案

问题是您的 checkAnswers 函数中存在语法错误,并且解释器会丢弃任何包含语法错误的脚本,因此所有其他函数也会被丢弃。

这是两个语法错误:

  • alert(radio[j].value)answers[i-1] = true; 不是有效的语句。 (我猜您打算删除 alert(radio[j].value) 部分,但突出显示了错误的内容?)
  • 您的左大括号 { 多于右大括号 }

一旦解决了这两个问题,脚本至少应该运行(尽管您可能仍然需要进行一些调试)。

关于javascript - onclick() 操作没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075091/

相关文章:

javascript - 将值从 html <select multiple> 复制到剪贴板

javascript - 按字段值从平面对象数组创建层次结构树

javascript - 处理对 Facebook 的 "Subscribe"按钮的点击

Javascript DOM 检测元素样式更改(无 JQUERY)

javascript - 如何识别正在使用哪个元素滚动?

javascript - 如何在 DOM 中添加自定义事件的监听器?

php - 在 php 循环中写入 javascript 数组

javascript - YUI 中限制拖动模块

javascript - Bootstrap 4 菜单和 Logo 不会对齐

javascript - 如何通过控制台记录整个 HTML 表单?