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

如何用原生JS根据单选按钮选中状态修改两个段落的单位文本

问题原因

你当前代码的问题在于单选按钮的value仅存储了重量单位,且两个段落都直接绑定了同一个单选值,自然无法分别输出重量、长度两类对应单位。

原生JS解决方案

不需要大幅修改现有代码,只需要新增单位映射关系,再调整事件回调逻辑即可:

完整修改后的JS代码

const paragraphWeightElement = document.querySelector(".js-paragraphWeight");
const paragraphHeightElement = document.querySelector(".js-paragraphHeight");
const form = document.querySelector(".js-form");

// 新增单位映射表:key为单选按钮value,value对应重量、长度单位组合
const unitConfig = {
  KG: {
    weight: 'KG',
    height: 'CM'
  },
  LBS: {
    weight: 'LBS',
    height: 'IN'
  }
}

form.addEventListener("input", (event) => {
  // 仅响应单选按钮的触发事件,避免其他表单元素干扰
  if(event.target.type !== 'radio') return
  const selectedUnit = unitConfig[event.target.value]
  paragraphWeightElement.innerText = selectedUnit.weight;
  paragraphHeightElement.innerText = selectedUnit.height;
});

可选语义化优化

如果希望降低代码耦合度、提升可读性,可以调整单选按钮的value为通用类型标识,不和单位值绑定:
修改对应HTML单选部分:

<li>
  <label>
    <input class="js-metric" type="radio" value="metric" name="unitType" />
    Metric
  </label>
</li>
<li>
  <label class="form__label">
    <input class="js-imperial" type="radio" value="imperial" name="unitType" />
    Imperial
  </label>
</li>

对应调整JS中的单位映射表即可:

const unitConfig = {
  metric: {
    weight: 'KG',
    height: 'CM'
  },
  imperial: {
    weight: 'LBS',
    height: 'IN'
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:39:05