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

JS实现点击不同li替换展示对应尺寸价格功能的问题求助

问题排查与修复方案

原有代码问题点

  • 点击事件触发时没有将当前点击的li元素传入处理函数,document.querySelector('.container li')默认仅返回匹配到的第一个li元素,导致无论点击哪个选项都只拿到第一个尺寸的内容
  • 每次点击都调用insertAdjacentHTML插入新的.price节点,没有复用已有的节点,导致重复生成div

修正后代码

JS代码(基于原有逻辑最小修改)

var sizeSelector = document.querySelectorAll('.container li');
var container = document.querySelector('.container');
// 提前初始化价格展示节点,不存在则创建,存在则复用
var priceNode = document.querySelector('.price');
if (!priceNode) {
  priceNode = document.createElement('div');
  priceNode.className = 'price';
  container.insertAdjacentElement('afterend', priceNode);
}

sizeSelector.forEach(function(el) {
  el.addEventListener('click', function() {
    // 将当前点击的元素传入处理函数
    runFunction(el);
  });
});

function runFunction(activeLi) {
  var newPrice = activeLi.innerHTML;
  // 直接更新已有节点内容,不重复插入
  priceNode.innerHTML = newPrice;
  console.log(newPrice);
}

HTML代码无需修改

<ul class='container'>
  <li>Size Small $20</li>
  <li>Size Medium $30</li>
  <li> Size large $40</li>
</ul>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:09