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

单选按钮未选中项求和功能实现咨询(附现有代码)

解决方案:为未选中选项添加分数计算

我明白你的需求啦——现在代码能搞定选中项的分数累加,但缺了「每个问题里未被选中的维度加2分」的逻辑。咱们先理清楚核心思路,再直接上修改后的代码:

核心逻辑拆解

你的每个问题是通过单选按钮的name属性分组的(比如Question1对应Left_1和Right_1,Question2对应Left_2和Right_2),所以我们需要:

  1. 先识别所有独立的问题组
  2. 对每个问题组,找出被选中的维度(data-id)
  3. 对每个未被选中的维度,给该维度加2分
  4. 最后叠加原有选中项的分数

修改后的完整代码

$("input[type='radio']").change(function() {
    // 用对象存储三个维度的分数,比单独变量更清晰
    let scores = {
        Networking: 0,
        Recognition: 0,
        KnowledgeSeeking: 0
    };
    const allDimensions = Object.keys(scores);

    // 提取所有问题编号(从Left_*的name里拆分)
    const questionIds = new Set();
    $("input[type='radio'][name^='Left_']").each(function() {
        const qId = $(this).attr('name').split('_')[1];
        questionIds.add(qId);
    });

    // 逐个处理每个问题
    questionIds.forEach(qId => {
        // 获取当前问题左右选中选项的维度
        const selectedLeft = $(`input[type='radio'][name='Left_${qId}']:checked`).attr('data-id');
        const selectedRight = $(`input[type='radio'][name='Right_${qId}']:checked`).attr('data-id');
        const selectedDimensions = new Set([selectedLeft, selectedRight]);

        // 给未选中的维度加2分
        allDimensions.forEach(dim => {
            if (!selectedDimensions.has(dim)) {
                scores[dim] += 2;
            }
        });

        // 叠加选中项的分数(原有逻辑保留)
        $(`input[type='radio'][name='Left_${qId}']:checked, input[type='radio'][name='Right_${qId}']:checked`).each(function() {
            scores[$(this).attr('data-id')] += Math.ceil($(this).val());
        });
    });

    // 弹出结果
    alert(`Networking: ${scores.Networking},\nRecognition: ${scores.Recognition},\nKnowledgeSeeking: ${scores.KnowledgeSeeking}`);
});

关键细节说明

  • 用Set存储选中的维度,判断「是否未选中」的操作更高效
  • 把分数存在对象里,后续扩展维度(比如加新的选项)会更方便
  • 遍历每个问题组单独计算,确保每个未选中的维度在每个问题里都能加2分

测试你的示例场景

当两个问题都选中Recognition的Most Preferred(+3)和KnowledgeSeeking的Least Preferred(+1)时:

  • Networking在每个问题里都未选中,两个问题共加2*2=4分
  • Recognition每个问题加3,两个问题共3*2=6分
  • KnowledgeSeeking每个问题加1,两个问题共1*2=2分
    结果完全符合你预期的Networking:4, Recognition:6, KnowledgeSeeking:2

另外提个小建议:你的HTML里有些data-id没加引号(比如Question2里的data-id=Recognition),虽然浏览器能兼容,但最好改成data-id="Recognition",保证语法规范哦~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:17:53