You need to enable JavaScript to run this app. 如何使用JavaScript实现自定义单选选择器,选中一项时自动取消其余项选中状态
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript实现自定义单选选择器,选中一项时自动取消其余项选中状态

实现方案

方案1:原生JS实现(无需修改原有HTML结构)

第一步:新增选中状态CSS样式

你可以根据需求自定义样式,示例如下:

.new__order__choice .juice__box.active {
  /* 选中状态样式,可自行修改 */
  background-color: var(--second-sub-color);
  color: #fff;
  border-color: var(--second-sub-color);
}

第二步:添加单选交互JS代码

确保代码在DOM加载完成后执行,可以放在</body>标签前,或者包裹在DOM加载完成事件中:

document.addEventListener('DOMContentLoaded', function() {
  // 获取所有选项元素
  const juiceOptions = document.querySelectorAll('.juice__box');
  
  // 可选:默认选中第一个选项
  // juiceOptions[0].classList.add('active');

  juiceOptions.forEach(option => {
    option.addEventListener('click', function() {
      // 移除所有选项的选中状态
      juiceOptions.forEach(item => item.classList.remove('active'));
      // 给当前点击的选项添加选中状态
      this.classList.add('active');

      // 如需获取选中值,可直接通过this.textContent获取
      // console.log('当前选中:', this.textContent.trim());
    });
  });
});

方案2:纯HTML+CSS实现(无需写JS代码)

利用原生radio单选框的默认特性实现,仅需调整原有HTML结构:

第一步:修改HTML结构

把每个.juice__box改为关联隐藏radio的label,所有radio设置相同的name属性即可默认触发单选逻辑:

<div class="row">
  <div class="col-lg-3 col-md-12 col-sm-12">
    <input type="radio" name="juice" id="juice1" hidden>
    <label class="juice__box" for="juice1">Juice 1</label>
  </div>
  <div class="col-lg-3 col-md-12 col-sm-12">
    <input type="radio" name="juice" id="juice2" hidden>
    <label class="juice__box" for="juice2">Juice 2</label>
  </div>
  <!-- 剩余5个选项按照上述格式修改即可 -->
</div>

第二步:新增选中状态CSS样式

.new__order__choice input[name="juice"]:checked + .juice__box {
  /* 选中状态样式,可自行修改 */
  background-color: var(--second-sub-color);
  color: #fff;
  border-color: var(--second-sub-color);
}

该方案无需编写任何JS代码,依靠浏览器原生特性实现单选,兼容性更好,表单提交时可直接获取radio的value值,适合需要表单提交的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:36:03