【发布时间】:2021-09-16 07:00:59
【问题描述】:
我遇到了一个问题,每次我添加元素时,它都会自行相乘(例如,如果购物车中有 1 个元素,下次点击它会再添加 2 个元素,如果有 3 个元素,它会添加多3个,6个就加4个),这是个大问题,请帮忙!
我的js代码:
let pList = document.getElementById("productList");
const addDrip = () => {
let Drip, localObj, tObj;
Drip = {
name: "Traditional Drip",
type: "normal",
price: "2.00",
imgSrc: "images/c5.png"
};
localObj = localStorage.getItem("Drip");
if(!localObj) tObj = [];
else tObj = JSON.parse(localObj);
tObj.push(Drip)
localStorage.setItem("Drip", JSON.stringify(tObj));
for(let i = 0;i < tObj.length;i++){
let htmlDrip = `
<div class="productDiv">
<p>${tObj[i].name}</p>
<p>${tObj[i].type}</p>
<p>${tObj[i].price}$</p>
<img src="${tObj[i].imgSrc}">
</div>
`
document.getElementById("productList").innerHTML += htmlDrip;
}
}
我的html部分:
<div class="cList">
<img src="images/c5.png"class = "tDrip">
<h1 class="Type">Traditional Drip</h1>
<button id="tAdd"onclick="addDrip()">Add Traditional Drip</button>
</div>
<div id = productList></div>
【问题讨论】:
-
您能否提供一个工作环境,让我可以测试这个东西,因为不清楚 tObj 实际持有什么以及阵列实际发生了什么。
-
那是因为您在 for 循环中更新了
productList的innerHTML。您可以在 for 循环之前清除productList的innerHTML
标签: javascript arrays dom local-storage e-commerce