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

如何在JavaScript的map方法中调用自定义createItemCart函数

实现方案

第一步:调整createItemCart函数适配批量渲染场景

你原有的createItemCart是针对单次点击添加商品的场景写的,需要微调参数和逻辑,兼容已有的购物车数组批量渲染:

// 新增qty参数,接收商品数量
function createItemCart(imgProduct, titleProduct, priceProduct, totalPrice, id, qty) {
  const itemsCart = document.getElementById("items-cart");
  // 移除这里的总价修改逻辑,交给map循环批量计算
  // document.querySelector(".total-price").innerText = totalPrice + priceProduct;
  
  const item = document.createElement("div");
  item.setAttribute("class", "item-cart");

  const imgItem = document.createElement("img");
  imgItem.src = imgProduct;

  const detailItem = document.createElement("div");

  const titleItem = document.createElement("div");
  titleItem.setAttribute("class", "title-item");
  titleItem.innerText = titleProduct;

  const divPrice = document.createElement("div");

  const priceItem = document.createElement("span");
  priceItem.setAttribute("class", "price-item");
  priceItem.innerText = priceProduct;

  const spanToman = document.createElement("span");
  spanToman.innerText = "تومان";

  const qtyItem = document.createElement("div");
  qtyItem.className = "qty-item";
  // 数量改为传入的qty,不要写死1
  qtyItem.innerText = qty;
  qtyItem.id = "item" + id;

  const deleteItem = document.createElement("i");
  deleteItem.className = "delete-item";
  deleteItem.innerText = "x";

  deleteItemCart(deleteItem, totalPrice, priceProduct);

  detailItem.appendChild(titleItem);
  detailItem.appendChild(divPrice);
  detailItem.appendChild(qtyItem);
  divPrice.appendChild(priceItem);
  divPrice.appendChild(spanToman);
  item.appendChild(imgItem);
  item.appendChild(detailItem);
  item.appendChild(deleteItem);

  itemsCart.appendChild(item);
}

原来函数外面的点击获取商品属性的逻辑不需要修改,不影响你之前的点击添加商品功能。

第二步:改造map循环,调用createItemCart函数

直接把map里的DOM创建逻辑替换为函数调用,把itemCart的对应属性按参数顺序传入即可:

// 初始化总价和商品总数
let totalPrice = 0;
let sumQty = 0;
items.map((itemCart) => {
  // 保留原有的总价和数量统计逻辑
  totalPrice += itemCart.price * itemCart.qty;
  sumQty += itemCart.qty;
  // 直接调用createItemCart,传入itemCart的对应属性
  createItemCart(
    itemCart.img, 
    itemCart.title, 
    itemCart.price, 
    totalPrice, 
    itemCart.id, 
    itemCart.qty
  );
});
// 批量更新总价和总数,避免重复操作DOM
document.querySelector(".total-price").innerText = totalPrice;
document.getElementById("number").innerText = sumQty;

你要的itemCart.img属性就是作为第一个参数传入createItemCart,函数内部会直接赋值给imgItem的src属性,和你之前手动写的逻辑效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:45:02