当前位置:首页 > JavaScript

js实现考试

2026-04-05 08:01:02JavaScript

实现考试系统的JavaScript方案

创建考试题目数据结构

使用数组存储题目信息,每个题目包含题干、选项和正确答案:

const questions = [
  {
    question: "JavaScript中哪个关键字用于声明变量?",
    options: ["var", "let", "const", "全部正确"],
    answer: 3
  },
  {
    question: "以下哪个方法可以添加数组元素?",
    options: ["push()", "pop()", "shift()", "unshift()"],
    answer: 0
  }
];

构建考试界面

通过DOM操作动态生成考试界面:

function renderExam() {
  const examContainer = document.getElementById('exam-container');
  questions.forEach((q, index) => {
    const questionDiv = document.createElement('div');
    questionDiv.innerHTML = `
      <h3>题目 ${index + 1}: ${q.question}</h3>
      ${q.options.map((opt, i) => `
        <label>
          <input type="radio" name="q${index}" value="${i}">
          ${opt}
        </label><br>
      `).join('')}
    `;
    examContainer.appendChild(questionDiv);
  });
}

实现计分功能

提交时计算得分并显示结果:

function calculateScore() {
  let score = 0;
  questions.forEach((q, index) => {
    const selectedOption = document.querySelector(`input[name="q${index}"]:checked`);
    if (selectedOption && parseInt(selectedOption.value) === q.answer) {
      score++;
    }
  });
  alert(`您的得分: ${score}/${questions.length}`);
}

添加计时功能

使用定时器实现考试倒计时:

let timeLeft = 1800; // 30分钟
function startTimer() {
  const timer = setInterval(() => {
    timeLeft--;
    document.getElementById('timer').textContent = 
      `${Math.floor(timeLeft/60)}:${timeLeft%60 < 10 ? '0' : ''}${timeLeft%60}`;
    if (timeLeft <= 0) {
      clearInterval(timer);
      calculateScore();
    }
  }, 1000);
}

防止页面刷新

监听beforeunload事件防止意外退出:

js实现考试

window.addEventListener('beforeunload', (e) => {
  e.preventDefault();
  return e.returnValue = '考试尚未提交,确定要离开吗?';
});

完整实现流程

  1. HTML结构包含考试容器和提交按钮
  2. 页面加载时调用renderExam()和startTimer()
  3. 提交按钮绑定calculateScore事件
  4. 添加CSS样式优化界面显示效果

这种实现方案支持题型扩展、自动评分和时间控制等核心考试功能,可根据需求进一步增加题目随机排序、错题回顾等功能模块。

标签: 考试js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…