本文教你使用原生 html 表单与 javascript 实现一个完整的单选题测验系统,包括选项绑定、用户选择检测、答案校验及最终得分统计,无需框架即可快速上手。
构建一个功能完整的 HTML 测验系统,核心在于三步:正确组织表单结构、可靠获取用户选择、精准比对并统计结果。下面以 5 道单选题为例,给出生产就绪的实现方案。
每个题目应使用相同 name 的 组成逻辑组(如 name="q1"),且每组必须至少有一个选项被选中才能视为有效作答。注意:value 值应唯一标识该选项(如 "a"、"b"),而非统一设为 "radio"——这是你原始代码中的关键问题。
? 最佳实践:为每个 添加 包裹,提升可访问性与点击区域;避免使用已废弃的 align 属性和 错误标签。
在提交时,需遍历所有题目,检查对应 name 下是否有 checked 的单选框。推荐使用 document.querySelector 替代过时的 document.forms["quizForm"]["q1"].value(后者在无选项选中时会返回 undefined,易引发错误):
function submitAnswers() {
const total
= 5;
let score = 0;
const answers = ["a", "b", "c", "a", "b"]; // 各题标准答案
// 检查每道题是否作答
for (let i = 1; i <= total; i++) {
const selected = document.querySelector(`input[name="q${i}"]:checked`);
if (!selected) {
alert(`第 ${i} 题未作答,请检查!`);
return false;
}
}
// 校验答案
for (let i = 1; i <= total; i++) {
const selected = document.querySelector(`input[name="q${i}"]:checked`).value;
if (selected === answers[i - 1]) {
score++;
}
}
// 显示结果(可升级为动态 DOM 插入)
alert(`恭喜完成测验!\n您答对了 ${score} 题,共 ${total} 题。\n正确率:${((score / total) * 100).toFixed(1)}%`);
return false;
}通过以上结构,你不仅能准确判断用户是否选择选项,还能构建出专业、健壮、可扩展的前端测验系统。核心逻辑清晰、代码简洁,适合初学者理解与进阶开发者复用。
立即学习“Java免费学习笔记(深入)”;