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

Javascript 为什么我的对象没有被推入另一个数组?,javascript,arrays,object,Javascript,Arrays,Object,我成功地将对象从storeItems数组推送到cartItems数组并在div中打印,但在添加更多功能后,它不再添加到数组中(通过控制台检查,长度值为0)。我没有看到什么 我只需要将用户选择的对象从storeItems数组传输到cart Items,然后它将成功打印 //Function to add an item to users cart & update total function addItem() { var addId = document.getElementByI

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

我只需要将用户选择的对象从storeItems数组传输到cart 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);
}
//将项目添加到用户购物车并更新总计的函数
函数addItem(){
var addId=document.getElementById(“addItemId”).value;
var itemQty=document.getElementById(“addItemQty”).value;
对于(x=0;x
我只需要将用户选择的对象从storeItems数组传输到cart 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);
}
我对你的代码做了一些修改,使它对我有用

看看我的代码

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);

调试此条件。这可能对你有帮助

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

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

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

至少我会正确地声明我的循环变量:
for(var x=0;x
是否执行循环?是否看到任何错误?您的
addId
是否与
storeItems[x]相同.id
按类型和值无错误,这正是让我恼火的地方,我在盲目地尝试一些东西,@andy很好地观察到了正确性,但仍然没有success@Justinas它们必须匹配吗?我应该将函数中的变量声明为“id”吗这就是构造器中的内容,
id
可能在一个位置是字符串,而在另一个位置是数字,并且您使用的是与
==
的类型比较,而应该使用
=
的非类型比较,或者将值强制转换为同一类型?