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

不修改下拉选框option原有value值 实现选中选项切换对应蛋糕展示图

实现方案

不需要修改现有option的value属性,可通过以下两种更简洁的方案替代冗长的if else判断:

方案1:使用映射对象(无需修改HTML代码)

提前在JS中定义蛋糕款式与对应图片地址的映射表,直接通过选中的蛋糕名称匹配对应图片地址即可,后续新增款式只需要更新映射表,无需修改逻辑代码:

// 蛋糕款式-图片地址映射表,新增款式直接在此处添加键值对即可
const cakeImageMap = {
  'Round Golf Course': 'https://pbs.twimg.com/media/E5AhG5GXwAEADwJ?format=jpg&name=small',
  'Oblong Football Pitch': '对应款式的图片地址',
  'Round Chocolate Sweetie': '对应款式的图片地址',
  'Round White Chocolate Sweetie': '对应款式的图片地址',
  'Round Unicorn Cake': '对应款式的图片地址',
  'Round Drip Cake': '对应款式的图片地址',
  'Football Cake': '对应款式的图片地址',
  'Yum Yum Cake': '对应款式的图片地址',
  'Oblong Carrot Cake': '对应款式的图片地址',
  'Round AFC Cake': '对应款式的图片地址',
  'Square 8" Cake': '对应款式的图片地址',
  'Oblong Cake': '对应款式的图片地址'
}

function changeImage(){
  const imageEl = document.getElementById('cakeImages')
  const selectEl = document.getElementById('cake_type')
  const selectedCakeName = selectEl.options[selectEl.selectedIndex].text.trim()
  // 匹配到对应图片则赋值,未匹配到可设置为空/默认占位图
  imageEl.src = cakeImageMap[selectedCakeName] || ''
  // 可选:未选中有效款式时隐藏图片
  imageEl.style.display = cakeImageMap[selectedCakeName] ? 'block' : 'none'
}

方案2:使用data自定义属性(仅新增HTML属性,不修改原有value)

如果希望图片地址和选项绑定在一起维护,可以给每个option新增data-img自定义属性存储对应图片地址,无需修改原有value值:

<!-- 仅给option新增data-img属性,原有value保持不变 -->
<option value="5|Round Golf Course" data-img="对应图片地址" >Round Golf Course</option>
<option value="10|Oblong Football Pitch" data-img="对应图片地址" >Oblong Football Pitch</option>
<!-- 其余option同理新增data-img属性即可 -->

对应的JS代码可以简化为:

function changeImage(){
  const imageEl = document.getElementById('cakeImages')
  const selectedOption = document.getElementById('cake_type').selectedOptions[0]
  imageEl.src = selectedOption.dataset.img || ''
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:21:04