为什么我的对象没有被推入另一个数组?

时间:2019-04-20 15:50:07

标签: javascript arrays object

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

我只需要将用户选择的对象从storeItems数组转移到购物车Items即可成功打印

//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数组转移到购物车Items即可成功打印

2 个答案:

答案 0 :(得分: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);

根据我的推论,亲爱的沃森,如果条件不起作用,请在您的代码中关注

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

调试这种情况。这可能对您有帮助!

答案 1 :(得分:0)

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

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

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