Javascript 程序在出错后正确运行了两次

Javascript 程序在出错后正确运行了两次,javascript,Javascript,在两次输入正确答案后,任何后续尝试(即使再次输入正确答案)都会显示“重试”输出。是什么导致了这种奇怪的行为 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>

在两次输入正确答案后,任何后续尝试(即使再次输入正确答案)都会显示“重试”输出。是什么导致了这种奇怪的行为

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type="text/javascript">
            var answer;
            var firstNum;
            var secondNum;
            var check = true;
            question();

            function question() {
                firstNum = Math.floor(Math.random() * 101);
                secondNum = Math.floor(Math.random() * 101);
                answer = firstNum * secondNum;
                document.writeln("<h1>How much is " + firstNum + " times " + secondNum + "</h1>");
                document.writeln(answer);
                document.write('<input name="inputAnswer" type="text" id="inputAns"/>');
                document.write('<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>');
            }

            function validate() {
                if (document.getElementById("inputAns").value == answer) {
                    document.write("Good");
                    check = true;
                    result();
                } else {
                    check = false;
                    document.write("try again");
                    result();
                }
            }

            function result() {
                if (check == true)
                    question();
                else {
                    document.writeln("<h1>How much is " + firstNum + " times " + secondNum + "</h1>");
                    document.writeln(answer);
                    document.write('<input name="inputAnswer" type="text" id="inputAns"/>');
                    document.write('<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>');
                }
            }
        </script>
    </head>

    <body></body>

</html>

无标题文件
var回答;
var-firstNum;
var-secondNum;
var检查=真;
问题();
函数问题(){
firstNum=Math.floor(Math.random()*101);
secondNum=Math.floor(Math.random()*101);
答案=firstNum*secondNum;
document.writeln(“多少是“+firstNum+”乘以“+secondNum+”);
书面文件(答复);
文件。写(“”);
文件。写(“”);
}
函数验证(){
if(document.getElementById(“inputAns”).value==answer){
文件。书写(“良好”);
检查=正确;
结果();
}否则{
检查=错误;
文档。写入(“重试”);
结果();
}
}
函数结果(){
如果(检查==true)
问题();
否则{
document.writeln(“多少是“+firstNum+”乘以“+secondNum+”);
书面文件(答复);
文件。写(“”);
文件。写(“”);
}
}

发生这种情况是因为您使用
id=“inputAns”
重复创建元素。不允许两个元素具有相同的
id

还请注意:

  • 如果在第一个输入框中键入数字,则输出(良好/重试)正确。这是由
    document.getElementByID
    的工作方式造成的
  • 单击哪个“提交答案”无关紧要——它们都做相同的事情(
    validate()

发生这种情况是因为您使用
id=“inputAns”
重复创建元素。不允许两个元素具有相同的
id

还请注意:

  • 如果在第一个输入框中键入数字,则输出(良好/重试)正确。这是由
    document.getElementByID
    的工作方式造成的
  • 单击哪个“提交答案”无关紧要——它们都做相同的事情(
    validate()

    • 我有一种类似的解决方案,但方式不同。试试看

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                                          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Untitled Document</title>
       <h1>How much is <span id="firstnumber"></span>  times <span id="secondnumber"></span></h1>
                    answer
                      <input name="inputAnswer" type="text" id="inputAns"/>
                      <input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>
                      <span id="answer"></span>
      <script type = "text/javascript">
          var answer;
          var firstNum;
          var secondNum;
          var check= true;
         var count=0;
      question();
      
      
          function question()
          {   
      
                  firstNum= Math.floor(Math.random()*101);
                  secondNum= Math.floor(Math.random()*101);
      
                  answer = firstNum * secondNum;
      
      
      
                    document.getElementById("firstnumber").innerHTML=firstNum;
                     document.getElementById("secondnumber").innerHTML=secondNum;
      
          }
      
      
      
          function validate()
          {
              if(document.getElementById("inputAns").value == answer)
              {
      
      
                  check= true;
      
      
              }
              else
              {
                  check= false;
      
      
              }
              result();
      
      
          }
      
          function result()
          {
              if(check== true)
              {
                  document.getElementById("answer").innerHTML="correct answer"
                  count=count+1;
      
      
              }
              else
              {
                  document.getElementById("answer").innerHTML="wrong answer.<br>you've corrected total "+count+" questions.";
              }
              document.getElementById("inputAns").value="";
               question();
      
      
          }
      
          </script>
      
      
      无标题文件
      一次多少钱
      回答
      var回答;
      var-firstNum;
      var-secondNum;
      var检查=真;
      var计数=0;
      问题();
      函数问题()
      {   
      firstNum=Math.floor(Math.random()*101);
      secondNum=Math.floor(Math.random()*101);
      答案=firstNum*secondNum;
      document.getElementById(“firstnumber”).innerHTML=firstNum;
      document.getElementById(“secondnumber”).innerHTML=secondNum;
      }
      函数验证()
      {
      if(document.getElementById(“inputAns”).value==answer)
      {
      检查=正确;
      }
      其他的
      {
      检查=错误;
      }
      结果();
      }
      函数结果()
      {
      如果(检查==true)
      {
      document.getElementById(“答案”).innerHTML=“正确答案”
      计数=计数+1;
      }
      其他的
      {
      document.getElementById(“answer”).innerHTML=“回答错误。
      您已更正了总计“+count+”个问题。”; } document.getElementById(“inputAns”).value=“”; 问题(); }
      我有一种类似的解决方案,但方式不同。试试看

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                                          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Untitled Document</title>
       <h1>How much is <span id="firstnumber"></span>  times <span id="secondnumber"></span></h1>
                    answer
                      <input name="inputAnswer" type="text" id="inputAns"/>
                      <input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>
                      <span id="answer"></span>
      <script type = "text/javascript">
          var answer;
          var firstNum;
          var secondNum;
          var check= true;
         var count=0;
      question();
      
      
          function question()
          {   
      
                  firstNum= Math.floor(Math.random()*101);
                  secondNum= Math.floor(Math.random()*101);
      
                  answer = firstNum * secondNum;
      
      
      
                    document.getElementById("firstnumber").innerHTML=firstNum;
                     document.getElementById("secondnumber").innerHTML=secondNum;
      
          }
      
      
      
          function validate()
          {
              if(document.getElementById("inputAns").value == answer)
              {
      
      
                  check= true;
      
      
              }
              else
              {
                  check= false;
      
      
              }
              result();
      
      
          }
      
          function result()
          {
              if(check== true)
              {
                  document.getElementById("answer").innerHTML="correct answer"
                  count=count+1;
      
      
              }
              else
              {
                  document.getElementById("answer").innerHTML="wrong answer.<br>you've corrected total "+count+" questions.";
              }
              document.getElementById("inputAns").value="";
               question();
      
      
          }
      
          </script>
      
      
      无标题文件
      一次多少钱
      回答
      var回答;
      var-firstNum;
      var-secondNum;
      var检查=真;
      var计数=0;
      问题();
      函数问题()
      {   
      firstNum=Math.floor(Math.random()*101);
      secondNum=Math.floor(Math.random()*101);
      答案=firstNum*secondNum;
      document.getElementById(“firstnumber”).innerHTML=firstNum;
      document.getElementById(“secondnumber”).innerHTML=secondNum;
      }
      函数验证()
      {
      if(document.getElementById(“inputAns”).value==answer)
      {
      检查=正确;
      }
      其他的
      {
      检查=错误;
      }
      结果();
      }
      函数结果()
      {
      如果(检查==true)
      {
      document.getElementById(“答案”).innerHTML=“正确答案”
      计数=计数+1;
      }
      其他的
      {
      document.getElementById(“answer”).innerHTML=“回答错误。
      您已更正了总计“+count+”个问题。”; } document.getElementById(“inputAns”).value=“”; 问题(); }
      BTW您从哪里学习JS?这不是大多数网络应用程序的结构
      document.write
      很少在实践中使用。更常见的是使用
      document.createElement
      创建元素,并使用
      some\u元素向元素添加行为。addEventListener
      @Kos,听起来像是家庭作业。顺便问一下,你从哪里学JS?这不是大多数网络应用程序的结构
      document.write
      很少在实践中使用。更常见的是使用
      document.createElement
      创建元素,并使用
      some\u元素向元素添加行为。addEventListener
      @Kos,听起来像是家庭作业