:<span class="cart-prize">30.00</span>
const total = [];
const items = document.querySelectorAll('.cart-prize'); //item price displaying on the cart when cart popups
items.forEach(function(item)
{
total.push(parseFloat(item.textContent)).toFixed(2);
});
const totalMoney = total.reduce((accumulator, EachArrayValue)
=> accumulator + EachArrayValue);
items.forEach((each) => each = "$"+ each.textContext);
document.getElementById("totalMoney").textContent =
"$"+totalMoney; //works ok
document.getElementById("itemTotal").textContent =
total.length + " items"; //works ok
在这里使用reduce方法对总数组中的所有价格元素求和后,我尝试将“ $”字符串与“ cart-prize”的每个文本内容连接起来:
items.forEach((each) => each = each.textContext + "$");
但未成功。购物车上仅显示不带美元符号的浮点数
我不知道自己在哪里弄错了。此方法有问题吗:items.forEach((each) => each = "$" + each.textContext);
答案 0 :(得分:1)
您通过这种替代失去了对原始each
对象的引用
items.forEach((each) => each = "$"+ each.textContext);
您应该尝试使用标准的for循环
for (let i = 0; i < items.length; i++) {
items[i] = "$"+ items[i].textContext;
}
答案 1 :(得分:0)
使用items.forEach((each) => each = each.textContext + "$");
的问题在于,它仅在items
数组之间进行迭代,而没有创建新的数组。
您可以使用forEach
来创建一个新数组,而不是使用map
,就像下面的示例一样,该数组再次分配给items
:
let items = [{textContent: "example1"}, {textContent: "example2"}];
items = items.map((object) => {
object.textContent = "$" + object.textContent;
return object;
});
console.log(items);
有关map
和foreach
之间差异的更多信息,请查找here。
答案 2 :(得分:0)
misorude的评论正确。您需要做的就是在forEach循环中使用each.textContent
而不是each
。
items.forEach((each) => each.textContent = "&"+each.textContent);