You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript获取HTML单选按钮的值并实现问卷答案统计

问题排查与修复方案

你当前的代码存在5个核心问题,逐个修复即可实现需求:

1. 修复单选框互斥问题

你所有题目的单选框name属性都设为了_exam_,浏览器会把所有同名单选框视为同一组,导致选了第二题就会取消第一题的选择。需要按题目区分name属性,比如第一题的单选框name="q1"、第二题name="q2",以此类推。

2. 修复重复ID问题

HTML要求ID全局唯一,你所有下一题按钮都用了id="button",导致只有第一个按钮能绑定事件。把按钮ID删除,统一替换为class="nextBtn"即可。

3. 修复字典操作语法错误

JS对象取值不能用小括号,也不要给变量加引号,错误写法dict("rb.value")要改为dict[rb.value]。

4. 调整变量声明顺序

你在dict声明前就使用了dict,会触发未定义错误,要把变量声明移到事件绑定代码之前。

5. 新增答案序列存储逻辑

定义一个数组存储每道题的答案,最后到结果页拼接成字符串展示即可。


完整修改后的代码

HTML修改部分(只列需要调整的规则,其他内容保持不变)

每道题的单选框name替换为当前题号,按钮修改为class属性:

<!-- 以第一题为例,剩余4道题按相同规则修改即可 -->
<form class="questionForm" id="q1" data-question="1">
    <div>
        <p>Question 1</p>
        <p><input type="radio" name="q1" value="a">A. Rustgeving</p>
        <p><input type="radio" name="q1" value="b">B. Zingeving</p>
        <p><input type="radio" name="q1" value="c">C. Duurzaamheid</p>
        <p><input type="radio" name="q1" value="d">D. Verzuiling</p>
        <p><input type="radio" name="q1" value="e">E. Zorgzaamheid</p>
    </div>
    <input class="nextBtn" type="button" value="Volgende">
</form>

完整JS代码

// 提前声明全局存储变量
var answerCount = {
    "a": 0,
    "b": 0,
    "c": 0,
    "d": 0,
    "e": 0,
};
var answerSequence = []; // 存储答案序列,最终拼接即可得到AABDC格式的结果

$(document).ready(function () {
    // 初始化隐藏所有题目和结果页
    $('.questionForm').hide();
    $('#results').hide();
    // 展示第一题
    $('#q1').show();

    // 统一绑定所有下一题按钮的点击事件,不需要逐个绑定
    $('.nextBtn').click(function () {
        // 获取当前题目容器、题目编号
        const currentForm = $(this).closest('.questionForm');
        const questionId = currentForm.attr('id');
        const currentQuestionNum = parseInt(currentForm.data('question'));
        // 获取当前题选中的单选值
        const checkedVal = $(`input[name="${questionId}"]:checked`).val();
        
        // 未选答案就点击下一题的拦截逻辑
        if(!checkedVal) {
            alert('请先选择答案再点击下一题');
            return false;
        }

        // 存储答案数据
        answerSequence.push(checkedVal.toUpperCase()); // 转大写后存入,最后拼接就是要求的大写序列格式
        answerCount[checkedVal] += 1;

        // 页面跳转逻辑
        $('.questionForm').hide();
        if(currentQuestionNum < 5) {
            // 还有未答题目,跳转到下一题
            $(`#q${currentQuestionNum + 1}`).show();
        } else {
            // 所有题目答完,跳转到结果页展示数据
            $('#results').show();
            const finalSequence = answerSequence.join('');
            $('#results').append(`<p>你的答案序列:${finalSequence}</p>`);
            $('#results').append(`<p>各选项选择次数:A:${answerCount.a} B:${answerCount.b} C:${answerCount.c} D:${answerCount.d} E:${answerCount.e}</p>`);
        }
        return false;
    });
});

内容的提问来源于stack exchange,提问作者Juriaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:06:02