为什么我的对象没有被推入不同的数组?

问题描述 投票:-1回答:2

我将对象从storeItems数组推送到cartItems数组并成功打印在div中,但在添加更多功能后,它不再添加到数组中(通过控制台检查并且长度值为0)。我没看到什么?

我只需要将用户选择的对象从storeItems数组传输到购物车项目,然后它将成功打印

//Function to add an item to users cart & update total
function addItem() {
  var addId = document.getElementById("addItemId").value;
  var itemQty = document.getElementById("addItemQty").value;

  for (x = 0; x < storeItems.length; x++) {
    //Calling validation functions
    validateId();
    validateQty();


    if (addId === storeItems[x].id) {
      cartItems.push(new CartItem(storeItems[x].id, storeItems[x].name, storeItems[x].price, storeItems[x].qty, storeItems[x].shippingCost));
      displayCart();
    }

  }

  console.log(cartItems);
}

我只需要将用户选择的对象从storeItems数组传输到购物车项目,然后它将成功打印

javascript arrays object
2个回答
0
投票

在与值和文本输入进行比较时,请确保使用正确的比较运算符。无论type=""值设置为什么,文本输入都将以字符串形式返回。

因此,在将输入与实际数据进行比较时,请执行以下操作之一:

  • 使用==而不是===来忽略/跳过类型比较
  • 将输入值转换为应该的类型,然后您可以使用=== parseInt(myInput) === myNonInput new Date(myInput).getTime() === myNonInput.getTime() myInput === myNonInput.toString() 等等

0
投票

好的,我走了,我对你的代码做了一些修改,让它对我来说可行。

看看我的代码

var storeItems = [1,2,3,4,5,6]

function addItem(addId, itemQty) {
function addItem(addId, itemQty) {
  for (x = 0; x < storeItems.length; x++) {
    //Calling validation functions
    if (addId === storeItems[x]) {
      cartItems.push(x);
    }
  }
  console.log(cartItems);
}

addItem(6);

根据我的推论,亲爱的Watson,在您的代码中,如果条件不起作用

 if (addId === storeItems[x].id) {
     ....
    }

调试这个条件。这可能对你有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.