javascript quiz:让原本一次出现一个的所有问题都出现在测验结束时

如何解决javascript quiz:让原本一次出现一个的所有问题都出现在测验结束时

我有一个 javascript 测验,我知道如何让问题一次出现一个。

一旦用户点击“检查答案”,我需要帮助让所有问题再次出现。这样用户就可以看到所有的问题,并获得有关是否正确回答的反馈。现在用户只看到总分和最终问题。

问题显示为 html 单选按钮,而不是 javascript 数组,因为真正的测验将包括阅读每个问题的文本和音频文件。我想一次显示一个问题,因为真正的测验将有 40 个问题,如果它们都出现在同一页面上,这将是压倒性的。

任何帮助/想法将不胜感激!

css

body{

    font-family: arial;
    text-align: justify;
    margin: 25px;
}
#check{
    font-family:arial;
    font-size: 14px;
    background-color: #C0C0C0;
    color: #000000;
    border: 1px solid black;
    cursor: pointer;
    
}
#next{
    font-family:arial;
    font-size: 14px;
    background-color: #C0C0C0;
    color: #000000;
    border: 1px solid black;
    cursor: pointer;
    
}
#check:hover{
    background-color: #C0C0C0;
}
#next:hover{
    background-color: #C0C0C0;
}

javascript:

function validate() {
 
var q1 = document.forms.form.q1.value;
var q2 = document.forms.form.q2.value;
var q3 = document.forms.form.q3.value;
var q4 = document.forms.form.q4.value;

  var questions = [q1,q2,q3,q4];

  var answers = ["a","c","b"];


  var points = 0;
  var total = 4;


  for (var i = 0; i < total; i++) {
    
    if (questions[i] == answers[i]) {
      points = points + 1;
          
    } 
    
   if (q1 == "a") {
      document.getElementById("text1a").style.color="GREEN";
     
    }
    if (q1 == "b") {
      document.getElementById("text1b").style.color="RED";
     
    }
     if (q1 == "c") {
      document.getElementById("text1c").style.color="RED";
     
    }
      if (q2 == "a") {
      document.getElementById("text2a").style.color="RED";
     
    }
    if (q2 == "b") {
      document.getElementById("text2b").style.color="RED";
     
    }
     if (q2 == "c") {
      document.getElementById("text2c").style.color="GREEN";
     
    }
      if (q3 == "a") {
      document.getElementById("text3a").style.color="RED";
     
    }
    if (q3 == "b") {
      document.getElementById("text3b").style.color="RED";
     
    }
     if (q3 == "c") {
      document.getElementById("text3c").style.color="GREEN";
     
    }
    if (q4 == "a") {
      document.getElementById("text4a").style.color="RED";
     
    }
    if (q4 == "b") {
      document.getElementById("text4b").style.color="GREEN";
     
    }
     if (q4 == "c") {
      document.getElementById("text4c").style.color="RED";
     
    }
      }

 

 

  var q = document.getElementById("p");

  q.style.fontSize = "14px";
  q.style.textAlign = "left";
  q.innerHTML =
    
    points +
    " out of " +
    total +
    "<br />"

  return false;
}
function startTimer(duration,display) {
    var timer = duration,minutes,seconds;
    setInterval(function () {
        minutes = parseInt(timer / 60,10);
        seconds = parseInt(timer % 60,10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;

        if (--timer < 0) {
            timer = duration;
        }
    },1000);
}

window.onload = function () {
    var sixtyMinutes = 60 * 60,display = document.querySelector('#time');
    startTimer(sixtyMinutes,display);
};


function nextQ(){
   var  blockFound = 0;
   var lastQuestion = 0;
   var divs = document.getElementsByTagName("div");
   for(var i = 0; i < divs.length; i++){
   if ( blockFound == 1){
    blockFound = 0;
    divs[i].style.display = 'block'; 
    }else if ( divs[i].style.display == 'block' ){
    if ( i + 2 == divs.length){
        lastQuestion = 1;
    }
    blockFound = 1;
   divs[i].style.display = 'none'; 
   }
 }
if ( lastQuestion == 1){
    document.getElementById('next').style.visibility = 'hidden';  
   }  
 }

html:

<!DOCTYPE html>
<title>Reading Practice</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<link rel="stylesheet" href="test.css">
<script type="text/javascript" src="test.js">
</script>
</head>

<body>
 <div><p style="color:#ff4b0d; font-size:30px">Time left: <span id="time">60:00</span></p></div>
 <br>
 <br>
<form name="form" id="questions" onsubmit="return false;">
<div id="q0" style="display:block">

1. Where is Mt. Everest? <BR><BR>

    <input type="radio" name="q1" value="a" id="1a" class="1a"><span id="text1a"><label for="1a"> A Nepal</label></span><br>
    <input type="radio" name="q1" value="b" id="1b" class="1b"><span id="text1b"><label for="1b"> B China</label></span><br>
    <input type="radio" name="q1" value="c" id="1c" class="1c"><span id="text1c"><label for="1c"> C India</label></span><br>
     <br>

</div>
<div id="q1"  style="display:none">

2. What is the second largest country in the world (by area)? <BR><BR>

    <input type="radio" name="q2" value="a" id="2a" class="2a"><span id="text2a"><label for="2a"> A China</label></span><br>
    <input type="radio" name="q2" value="b" id="2b" class="2b"><span id="text2b"><label for="2b"> B Russia</label></span><br>
    <input type="radio" name="q2" value="c" id="2c" class="2c"><span id="text2c"><label for="2c"> C Canada</label></span><br>
     <br>
   
</div>
<div id="q2"  style="display:none">

3. How many times have the Olympic Games been cancelled? <BR><BR>

    <input type="radio" name="q3" value="a" id="3a" class="3a"><span id="text3a"><label for="3a"> A one</label></span><br>
    <input type="radio" name="q3" value="b" id="3b" class="3b"><span id="text3b"><label for="3b"> B two</label></span><br>
    <input type="radio" name="q3" value="c" id="3c" class="3c"><span id="text3c"><label for="3c"> C three</label></span><br>
<br>

</div>
<div id="q3"  style="display:none">
4. How many colours are in a rainbow? <BR><BR>

    <input type="radio" name="q4" value="a" id="4a" class="4a"><span id="text4a"><label for="4a"> A five</label></span><br>
    <input type="radio" name="q4" value="b" id="4b" class="4b"><span id="text4b"><label for="4b"> B seven</label></span><br>
    <input type="radio" name="q4" value="c" id="4c" class="4c"><span id="text4c"><label for="4c"> C nine</label></span><br>
         <br>
 <input type="submit" id="check" value="check answer" onclick="validate();" />
 <p id="p"></p>
 </div>
<button id="next" onclick="nextQ()">Next Question</button>

</form>
</body>

</html>

解决方法

您需要做的就是在 return 函数的末尾添加以下内容(但在 const divs = document.getElementsByTagName('div') for (const div of divs) { div.style.display = 'block' div.style.visibility = 'visible' } 之前 - 您实际上可以将其删除):

style

如果你想让它更简洁,你可以解构 const divs = document.getElementsByTagName('div') for (const {style} of divs) { style.display = 'block' style.visibility = 'visible' } 属性:

{{1}}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-