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

如何根据下拉框选中项设置对应分值(不修改原有option值)

解决方案

首先,你现有脚本的问题在于字符串比较时没有给Verbal Warning加引号,而且变量value未声明(会污染全局作用域)。先修复这个基础版本:

function setValue(){
  // 声明变量,避免全局污染
  const selectedAction = document.getElementById('dis_value').value;
  let deductScore = 0;
  
  if (selectedAction === "Verbal Warning") {
    deductScore = 10;
  } else if (selectedAction === "Written Warning") {
    deductScore = 20;
  } else if (selectedAction === "Demotion") {
    deductScore = 30;
  } else if (selectedAction === "Suspension") {
    deductScore = 50;
  }
  
  // 这里可将deductScore用于扣除总评分的逻辑
  alert(`当前惩戒对应扣分:${deductScore}`);
}

如果后续要新增惩戒方式,上面的if-else会越来越繁琐,更推荐用映射对象管理惩戒与分值的对应关系,代码更简洁易维护:

// 定义惩戒方式与分值的映射表
const actionScoreMap = {
  "Verbal Warning": 10,
  "Written Warning": 20,
  "Demotion": 30,
  "Suspension": 50
};

function setValue(){
  const selectedAction = document.getElementById('dis_value').value;
  // 从映射表中获取对应分值,默认0(无匹配项时)
  const deductScore = actionScoreMap[selectedAction] || 0;
  
  // 示例:假设总评分元素id为totalScore,执行扣除逻辑
  // const totalScoreEl = document.getElementById('totalScore');
  // totalScoreEl.textContent = parseInt(totalScoreEl.textContent) - deductScore;
  
  alert(`当前惩戒对应扣分:${deductScore}`);
}

关键说明

  • 无需修改原有<option>的value属性,完全通过JS映射关系实现分值匹配
  • 映射对象的方式后续新增惩戒时,只需在actionScoreMap里添加键值对,无需修改逻辑代码
  • 变量声明使用const/let,避免全局变量污染

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:45:07