为什么我的对象没有被推入不同的数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的对象没有被推入不同的数组?相关的知识,希望对你有一定的参考价值。
我将对象从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数组传输到购物车项目,然后它将成功打印
答案
在与值和文本输入进行比较时,请确保使用正确的比较运算符。无论type=""
值设置为什么,文本输入都将以字符串形式返回。
因此,在将输入与实际数据进行比较时,请执行以下操作之一:
- 使用
==
而不是===
来忽略/跳过类型比较 - 将输入值转换为应该的类型,然后您可以使用
===
parseInt(myInput) === myNonInput
new Date(myInput).getTime() === myNonInput.getTime()
myInput === myNonInput.toString()
等等
另一答案
好的,我走了,我对你的代码做了一些修改,让它对我来说可行。
看看我的代码
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) {
....
}
调试这个条件。这可能对你有所帮助!
以上是关于为什么我的对象没有被推入不同的数组?的主要内容,如果未能解决你的问题,请参考以下文章