当前位置:首页 > 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实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js树实现

js树实现

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