javascript - 无法读取未定义的属性 'name'。购物车

标签 javascript jquery html

我正在尝试用 JS 实现一个简单的购物车。

$('.addToCart').click(function(event) {
  event.preventDefault();
  var name = $(this).data('name');
  var price = Number($(this).data('price'));
  cart.addProduct(name, price, 1);
});

这是我的购物车对象

var cart = (function () {
  cartStorage = [];

  function Product(name, price, count) {
    this.name = name;
    this.price = price;
    this.count = count;
  }
  var object = {};
  object.addProduct = function (name, price, count) {
    for (var i in cartStorage) {
      if (cartStorage[i].name == object.name) {
        cartStorage[i].count++;
        return;
      }
    }
    var newItem = Product(name, price, count);
    console.log(newItem);
    cartStorage.push(newItem);
  }

当我尝试控制台记录它时,它打印undefined。如果我再点击一个按钮,它会显示“无法读取属性‘名称’”。

这是我的典型元素卡 block

            <div class="col-8 col-md-4 col-lg-3 card">
                <img src="https://picsum.photos/200?random=9">
                <div class="priceWrapper">
                    <input type="button" value="BUY" class = "addToCart" data-name = "Product #8" data-price = "0.001">
                    <p class="newPrice">0.001$ </p>
                    <p class="oldPrice"><strike>300$</strike></p>
                </div>
                <p class="item-name">Product #8 </p>
            </div>

最佳答案

试试这个

var newItem = new Product(name, price, count);

使用关键字 new 从对象构造函数中获取新对象。

关于javascript - 无法读取未定义的属性 'name'。购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58620293/

相关文章:

html - 如何在 PhpStorm 中显示隐藏字符,尤其是行分隔符

php - 单击按钮时 SQL 更新表行

javascript 文本字段计数器显示在加载和按键时显示

javascript - 如何在鼠标悬停时以动态高度提供圆 Angular 图像

javascript - javascript中的自删除方法实例

javascript - jQuery 显示和隐藏切换

javascript - 使用父 Controller 方法调用测试 Angular

javascript - 使用 node.js 进行基本 Ajax 发送/接收

javascript - 使用 Tempus Dominus 的日期时间选择器防止输入字段上的移动键盘

javascript - 如何在html中水平使用页面 slider