Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Javascript成功提交表单_Javascript_Html_Css - Fatal编程技术网

无法使用Javascript成功提交表单

无法使用Javascript成功提交表单,javascript,html,css,Javascript,Html,Css,下面是一个使用HTML、CSS和JavaScript的测验应用程序代码。您将收到一些问题,您需要从每个问题中选择一个选项,然后单击提交。安全总分应显示在“您已得分”中。但是,当我单击提交时,分数没有变化。 下面是HTML、CSS和Javascript的代码。请更正代码并让我知道哪里做错了 <!DOCTYPE html> <html> <head> <title>Quiz Game</title> <

下面是一个使用HTML、CSS和JavaScript的测验应用程序代码。您将收到一些问题,您需要从每个问题中选择一个选项,然后单击提交。安全总分应显示在“您已得分”中。但是,当我单击提交时,分数没有变化。 下面是HTML、CSS和Javascript的代码。请更正代码并让我知道哪里做错了

<!DOCTYPE html>
<html>
    <head>
        <title>Quiz Game</title>

    </head>

    <body>
        <style>
            .header{
                text-align: center;
                color:red;
                margin-top:100px;
                font-size: 100px;
            }
            .main{
                border: solid 1px blue;
                background-color: blue;

            }
             /* .options{
                 padding-left: 10px; 
            }  */
            .options li{
             list-style-type: circle;
             /* padding-left: 10px; */
             font-size: 20px;
            }
            .result1{
                border:2px solid black;
                margin-left: 500px;
                margin-right: 500px;
                background-color: grey;
                font-size: 20px;
                color:red;
            }
            .span{
                font-size: 50px;
                color:salmon;
                border:2px solid orangered;
            }
        </style>

        <h1 class="header">QUIZ</h1>
        <br>
        <div class="main">
            <div class="quiz-form">
        <h3 style="color:white;padding-left:50px">Question 1</h3>
        <br>

        <p style="color:white;padding-left: 10px;font-size: 20px;">1) First Question</p>
        <br>
        <input type='radio' name='Q1' id='Option-1'value='Option 1' >
       <label  style="color:white;" for="Option-1">Option 1</label><br>
            <br>
          <input type='radio' name='Q1' id='Option-2' value='Option 2'>
       <label  style="color:white;" for="Option-2">Option 2</label><br>
            <br> 
            </div>
            <div class="quiz-form">
            <h3 style="color:white;padding-left:50px">Question 2</h3>
        <br>

        <p style="color:white;padding-left: 10px;font-size: 20px;">2) Second Question</p>
        <br>
        <input type='radio' name='Q2' id='Option-3'value='Option 1' >
       <label  style="color:white;" for="Option-3">Option 1</label><br>
            <br>
          <input type='radio' name='Q2' id='Option-4' value='Option 2'>
       <label  style="color:white;" for="Option-4">Option 2</label><br>
            <br> 
            </div>
            <div class="quiz-form">
            <h3 style="color:white;padding-left:50px">Question 3</h3>
        <br>

        <p style="color:white;padding-left: 10px;font-size: 20px;">3) Third Question</p>
        <br>
        <input type='radio' name='Q3' id='Option-5' value='Option 1'>
       <label  style="color:white;" for="Option-5">Option 1</label><br>
            <br>
          <input type='radio' name='Q3' id='Option-6'value='Option 2'>
       <label  style="color:white;" for="Option-6">Option 2</label><br>
            <br> 
            </div>
            <div class="quiz-form">
            <h3 style="color:white;padding-left:50px">Question 4</h3>
        <br>

        <p style="color:white;padding-left: 10px;font-size: 20px;">4) Fourth Question</p>
        <br>
        <input type='radio' name='Q4' id='Option-7' value='Option 1'>
       <label  style="color:white;" for="Option-7">Option 1</label><br>
            <br>
          <input type='radio' name='Q4' id='Option-8' value='Option 2'>
       <label  style="color:white;" for="Option-8">Option 2</label><br>
            <br> <br><br>
            </div>
            <div style="text-align:center">
            <input type="submit" value="Submit" style="font-size:20px;">
        </div>
    </div>
        <div class="result" style="text-align: center;">
            <h1 class="result1" >Warning!! Clicking Submit will display the Result</h1>
            <p style="font-size: 40px;color:green;">You have scored <span class="span"> 0% </span></p>
        </div>




        <script src="Quiz.js"></script>
    </body>

</html>
您需要一个表单元素,只需将整个测验封装在一个表单元素中即可

问题2,preventDefault是一个事件函数而不是元素函数,如下所示:

form.addEventListener('submit', e => {
        e.preventDefault();
        // more things .....
});
最后,如果插值分数不正确,请使用反勾号,即:

result.querySelector('span').textContent = `${score}`;
下面是一个工作示例,其中包含我建议的更改:

<html>
  <head>
    <title>Quiz Game</title>
  </head>

  <body>
    <style>
      .header {
        text-align: center;
        color: red;
        margin-top: 100px;
        font-size: 100px;
      }
      .main {
        border: solid 1px blue;
        background-color: blue;
      }
      /* .options{
                 padding-left: 10px; 
            }  */
      .options li {
        list-style-type: circle;
        /* padding-left: 10px; */
        font-size: 20px;
      }
      .result1 {
        border: 2px solid black;
        margin-left: 500px;
        margin-right: 500px;
        background-color: grey;
        font-size: 20px;
        color: red;
      }
      .span {
        font-size: 50px;
        color: salmon;
        border: 2px solid orangered;
      }
    </style>

    <h1 class="header">QUIZ</h1>
    <br />
    <div class="main">
      <form>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 1</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">1) First Question</p>
          <br />
          <input type="radio" name="Q1" id="Option-1" value="Option 1" />
          <label style="color:white;" for="Option-1">Option 1</label><br />
          <br />
          <input type="radio" name="Q1" id="Option-2" value="Option 2" />
          <label style="color:white;" for="Option-2">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 2</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">2) Second Question</p>
          <br />
          <input type="radio" name="Q2" id="Option-3" value="Option 1" />
          <label style="color:white;" for="Option-3">Option 1</label><br />
          <br />
          <input type="radio" name="Q2" id="Option-4" value="Option 2" />
          <label style="color:white;" for="Option-4">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 3</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">3) Third Question</p>
          <br />
          <input type="radio" name="Q3" id="Option-5" value="Option 1" />
          <label style="color:white;" for="Option-5">Option 1</label><br />
          <br />
          <input type="radio" name="Q3" id="Option-6" value="Option 2" />
          <label style="color:white;" for="Option-6">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 4</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">4) Fourth Question</p>
          <br />
          <input type="radio" name="Q4" id="Option-7" value="Option 1" />
          <label style="color:white;" for="Option-7">Option 1</label><br />
          <br />
          <input type="radio" name="Q4" id="Option-8" value="Option 2" />
          <label style="color:white;" for="Option-8">Option 2</label><br />
          <br />
          <br /><br />
        </div>
        <div style="text-align:center">
          <input type="submit" value="Submit" style="font-size:20px;" id="submit_button" />
        </div>
      </form>
    </div>
    <div class="result" style="text-align: center;">
      <h1 class="result1">Warning!! Clicking Submit will display the Result</h1>
      <p style="font-size: 40px;color:green;">You have scored <span class="span"> 0% </span></p>
    </div>
    <script>
      const correctAnswers = ['Option 1', 'Option 2', 'Option 2', 'Option 1'];
      const form = document.querySelector('form');
      let score = 0;
      form.addEventListener('submit', e => {
        e.preventDefault();

        const userAnswers = [form.Q1.value, form.Q2.value, form.Q3.value, form.Q4.value];
        userAnswers.forEach((answer, index) => {
          if (answer == correctAnswers[index]) {
            score += 20;
          }
          console.log(score);
        });

        const result = document.querySelector('.result');
        result.querySelector('span').textContent = `${score}`;
      });
    </script>
  </body>
</html>

您没有form element,preventDefault是一个事件函数,而不是元素函数。我不熟悉堆栈溢出。我不知道that@Ivaalo这样一篇帖子在CR上是离题的,因为这些语句意味着代码被破坏:然而,当我点击submit时,分数并没有变化。。。请更正代码并让我知道哪里做错了。在建议用户发布之前,请先熟悉其中的内容。表单是一个常量值,用于存储.quick表单元素。另外,我确实试着按照你说的做了改变,但没有得到结果请解释一下你做了什么,我哪里做错了,你改变了。我做的唯一一件事是改变const form=document.querySelector.quick-form;to const form=document.querySelector'form';访问我在问题周围添加的表单元素。谢谢。但是,我仍然不明白为什么表单元素是必要的?因为该元素允许您以现有的方式访问输入元素的值,即form.Q1.value。您可以不用使用,但需要以另一种方式获取值,例如document.getElementById'some-input'.value。
<html>
  <head>
    <title>Quiz Game</title>
  </head>

  <body>
    <style>
      .header {
        text-align: center;
        color: red;
        margin-top: 100px;
        font-size: 100px;
      }
      .main {
        border: solid 1px blue;
        background-color: blue;
      }
      /* .options{
                 padding-left: 10px; 
            }  */
      .options li {
        list-style-type: circle;
        /* padding-left: 10px; */
        font-size: 20px;
      }
      .result1 {
        border: 2px solid black;
        margin-left: 500px;
        margin-right: 500px;
        background-color: grey;
        font-size: 20px;
        color: red;
      }
      .span {
        font-size: 50px;
        color: salmon;
        border: 2px solid orangered;
      }
    </style>

    <h1 class="header">QUIZ</h1>
    <br />
    <div class="main">
      <form>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 1</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">1) First Question</p>
          <br />
          <input type="radio" name="Q1" id="Option-1" value="Option 1" />
          <label style="color:white;" for="Option-1">Option 1</label><br />
          <br />
          <input type="radio" name="Q1" id="Option-2" value="Option 2" />
          <label style="color:white;" for="Option-2">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 2</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">2) Second Question</p>
          <br />
          <input type="radio" name="Q2" id="Option-3" value="Option 1" />
          <label style="color:white;" for="Option-3">Option 1</label><br />
          <br />
          <input type="radio" name="Q2" id="Option-4" value="Option 2" />
          <label style="color:white;" for="Option-4">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 3</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">3) Third Question</p>
          <br />
          <input type="radio" name="Q3" id="Option-5" value="Option 1" />
          <label style="color:white;" for="Option-5">Option 1</label><br />
          <br />
          <input type="radio" name="Q3" id="Option-6" value="Option 2" />
          <label style="color:white;" for="Option-6">Option 2</label><br />
          <br />
        </div>
        <div class="quiz-form">
          <h3 style="color:white;padding-left:50px">Question 4</h3>
          <br />

          <p style="color:white;padding-left: 10px;font-size: 20px;">4) Fourth Question</p>
          <br />
          <input type="radio" name="Q4" id="Option-7" value="Option 1" />
          <label style="color:white;" for="Option-7">Option 1</label><br />
          <br />
          <input type="radio" name="Q4" id="Option-8" value="Option 2" />
          <label style="color:white;" for="Option-8">Option 2</label><br />
          <br />
          <br /><br />
        </div>
        <div style="text-align:center">
          <input type="submit" value="Submit" style="font-size:20px;" id="submit_button" />
        </div>
      </form>
    </div>
    <div class="result" style="text-align: center;">
      <h1 class="result1">Warning!! Clicking Submit will display the Result</h1>
      <p style="font-size: 40px;color:green;">You have scored <span class="span"> 0% </span></p>
    </div>
    <script>
      const correctAnswers = ['Option 1', 'Option 2', 'Option 2', 'Option 1'];
      const form = document.querySelector('form');
      let score = 0;
      form.addEventListener('submit', e => {
        e.preventDefault();

        const userAnswers = [form.Q1.value, form.Q2.value, form.Q3.value, form.Q4.value];
        userAnswers.forEach((answer, index) => {
          if (answer == correctAnswers[index]) {
            score += 20;
          }
          console.log(score);
        });

        const result = document.querySelector('.result');
        result.querySelector('span').textContent = `${score}`;
      });
    </script>
  </body>
</html>