javascript - 在购物车中添加多个 onclick 元素

标签 javascript html

当单击购买该产品的按钮时,我想在购物车对象中添加新元素

我创建了一个对象 p2 和一个“购物车”,其中包含有人想要购买的东西。当单击“add-on-cart”按钮时,应添加与我们单击的数量一样多的 p2 对象

js:

let p2 = new Product("pencil", 3, 0, 10);
let cart = new ShoppingCart();
//addProduct is a function inside cart class
addProduct(product) {
    this.products.push(product);
    this.products.sort();
};
document.getElementById("buttonpen").addEventListener("click", cart.addProduct(p2))

html:

<button type="button" class="btn btn-danger" id="buttonpen">Purchase</button>

预期结果是,如果我单击 4 次按钮,我的阵列产品将充满 4 支笔。发生的情况是,当我打开浏览器时,它会自行推送 1 支笔,并且当我单击按钮时不会继续推送新的笔

最佳答案

您在页面加载后立即看到添加的产品的原因是您在监听器中调用该函数(而不是传递它) .

由于您专注于项目的一小部分,因此很难向您提供有关如何更好地解决问题的详细信息。根据您当前的实现,您可以将监听器更新为以下内容:

document.getElementById("buttonpen").addEventListener("click", () => cart.addProduct(p2));

您还可以研究 JS 中的柯里化(Currying)

关于javascript - 在购物车中添加多个 onclick 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889114/

相关文章:

javascript - 如何: operator works in Javascript

javascript - Mongoose:用逐项最大值更新数组

javascript - 正则表达式拆分缩小的 SVG 路径

javascript - Jquery 和 css 单击打开菜单并显示事件菜单

html - 如何将两个内联 block 框放在彼此下面

python - 获取Google搜索结果和清理HTML标签的建议

html - 当屏幕尺寸低于 1180 像素时,CSS 响应式设计页脚占据整个空间

html - 在html中制作一个特定形状的链接

javascript - angularjs 数据绑定(bind)问题

javascript - 在 Node.js 模块中使用函数