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

购物清单从Table转Li:JavaScript中createElement/appendChild实现方案咨询

把购物清单从表格改为列表(使用createElement/appendChild)

没问题,我来帮你把表格实现的购物清单改成纯列表形式,完全用createElement()和appendChild()来动态创建元素。先理清楚核心思路:

  • 先确认你的列表容器(就是你代码里的.adding元素),我们会把每个商品项都添加到这个容器里
  • 删掉原来操作表格的代码,换成创建列表项的逻辑
  • 每个商品项用<li>元素承载,里面可以用<span>区分商品名和价格,方便后续样式控制

接下来是具体的代码修改,我基于你给出的变量补充完整:

// 保留你已有的变量,顺便把语义化不好的newTab改成listContainer
let addItem = document.querySelector("#addButton");
let listContainer = document.querySelector(".adding"); 
let priceInput = document.querySelector("#price");
let productInput = document.querySelector("#product"); // 假设你的商品输入框id是product,要是不对你自己改下

// 删掉原来的table变量,因为我们不用表格了

// 给添加按钮绑定点击事件
addItem.addEventListener("click", function() {
  // 先获取输入值并做简单校验
  const productName = productInput.value.trim();
  const productPrice = priceInput.value.trim();
  
  if (!productName || !productPrice || isNaN(productPrice)) {
    alert("请输入有效的商品名称和数字价格!");
    return;
  }

  // 1. 创建列表项元素 <li>
  const listItem = document.createElement("li");
  
  // 2. 创建商品名称的span(可选,但方便样式控制)
  const nameSpan = document.createElement("span");
  nameSpan.textContent = productName;
  nameSpan.classList.add("product-name"); // 建议用CSS类控制样式,比直接写style灵活
  
  // 3. 创建价格的span
  const priceSpan = document.createElement("span");
  priceSpan.textContent = `¥${productPrice}`;
  priceSpan.classList.add("product-price");

  // 4. 把两个span加到列表项里
  listItem.appendChild(nameSpan);
  listItem.appendChild(priceSpan);

  // 5. 把列表项加到容器里
  listContainer.appendChild(listItem);

  // 最后清空输入框
  productInput.value = "";
  priceInput.value = "";
});

额外补充:

  • 你的HTML结构要对应调整:把原来的<table>删掉,换成列表容器,比如<ul class="adding"></ul>或者<ol class="adding"></ol>
  • 样式可以单独写CSS,比如:
    .product-name { margin-right: 15px; font-weight: 500; }
    .product-price { color: #27ae60; }
    li { margin: 8px 0; padding: 6px; border-bottom: 1px solid #eee; }
    
  • 如果需要加删除功能,也可以在创建<li>的时候额外加个删除按钮,比如:
    // 在创建priceSpan之后加这段
    const deleteBtn = document.createElement("button");
    deleteBtn.textContent = "删除";
    deleteBtn.classList.add("delete-btn");
    deleteBtn.addEventListener("click", () => listItem.remove());
    listItem.appendChild(deleteBtn);
    

这样修改后,每次点击添加按钮就会动态生成一个包含商品名和价格的列表项,完全符合你的要求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:13:47