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

Javascript构建动态测验题:单选时其他题目选中状态丢失求解

问题解决方案

问题原因

原有代码点击选项时使用$('.pilihan').not(this)选中了页面内所有选项,修改了所有非当前点击选项的背景色,因此切换题目选择时会清空之前所有题目的选中状态。

修改步骤

1. 调整题目生成逻辑,给每道题添加独立容器

修改showQuestion函数,将每道题的题干和选项都包裹在单独的.question-item容器中,方便后续按题区分选项范围。

2. 修改点击事件的样式重置范围

点击选项时仅重置当前题目内的其他选项样式,不影响其他题的选中状态。

完整修改后代码

function showQuestion(){
    for(let i = 0; i < QuesPartA.length; i++){
      // 新增每道题的独立容器
      const $questionItem = $('<div class="question-item"></div>');
      $questionItem.append('<div class="Question">Number '+ parseInt(i+1) +'</div>');
      QuesPartA[i]['option'].forEach(option => {
          $questionItem.append('<span class="pilihan">'+option +' </span><br>');  
      });
      // 把整道题插入到questionBox
      $(".questionBox").append($questionItem);
  } 

  $(".secondBox").append('<a href="Listening Part A.html" class="btnToPartB">Continue to Part B</a>');
};
$(".questionBox").on("click", ".pilihan", function() {
  // 定位当前选项所属的题目容器,仅重置该题下的其他选项
  const $currentQuestion = $(this).closest('.question-item');
  $(this).css("background", "red");
  $currentQuestion.find('.pilihan').not(this).css("background", "#ccc");
});

补充说明

  • 新增的.question-item容器无需额外配置样式,也不会影响原有页面布局,仅用于做题目范围划分
  • 同一道题修改选择时,会自动清空同题其他选项的选中状态,不同题的选中状态互相不受影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:15:04