繁体   English   中英

数组内的javascript数组

[英]javascript arrays inside an array

问题是。::在下面的代码中……当我调用方法“ addtocart”时……当数组只有一个元素时,它会正确打印..但是,如果数组中有多个元素,它将给出错误,如图所示在图片中:(忽略第一个“ 404”错误)

在此处输入图片说明

 var counter=0;
function addToCart(productName,productImageURL,productPrice)
{
alert("in addTOCART() method");
var cartArray=new Array();
cartArray[counter]=doTask(productName, productImageURL, productPrice);
//cartArray.concat(doTask(productName, productImageURL, productPrice));
/*cartArray.push(doTask(productName, productImageURL, productPrice));*/
alert("came back to original method");
alert(cartArray.length);
for ( var i = 0; i < cartArray.length; i++) {
    var array_element = cartArray[i];
    console.log(array_element.toString());
}
alert(cartArray.toString());
counter++;

}


function doTask(productName,productImageURL,productPrice)
{
alert("inside java script");
var cartItem = new Array();
itemName=productName;
itemPrice=productPrice;
alert(itemPrice);
itemImageURL=productImageURL;
quantity=prompt("Please enter the quantity","1");
quantity=parseInt(quantity);
alert(quantity+2);

if (!isNaN( quantity ))
{
    alert("yes its a number");
    alert(itemImageURL);
    alert(itemPrice);
    alert(quantity);
    alert(itemName);
    alert(itemImageURL);
    totalAmount=itemPrice*quantity;
    alert(totalAmount);
    cartItem.push(itemImageURL,itemName,itemPrice,quantity,totalAmount);
    //alert(cartItem.toString());
    console.log(cartItem.toString());
    return cartItem;
}

我认为您可以通过more than 1 element调用addToCart()使数组more than 1 element

调用addToCart()后, counter+1 第二次调用addToCart()counter为1:

 // counter = 1;
 cartArray[counter]=doTask(productName, productImageURL, productPrice);
 // add log to trace cartArray
 console.log(cartArray);

cartArray有2个元素。 索引0 undefined ;

怎么修

addToCart()定义cartArray

var counter=0;
var cartArray=new Array();

当数量为null时,似乎就像doTask函数一样,您不返回任何内容。所以cartArray包含未定义的元素。请尝试以下操作:

function doTask(productName,productImageURL,productPrice)
{
alert("inside java script");
var cartItem = new Array();
itemName=productName;
itemPrice=productPrice;
alert(itemPrice);
itemImageURL=productImageURL;
quantity=prompt("Please enter the quantity","1");
quantity=parseInt(quantity);
alert(quantity+2);

if (!isNaN( quantity ))
{
    alert("yes its a number");
    alert(itemImageURL);
    alert(itemPrice);
    alert(quantity);
    alert(itemName);
    alert(itemImageURL);
    totalAmount=itemPrice*quantity;
    alert(totalAmount);
    cartItem.push(itemImageURL,itemName,itemPrice,quantity,totalAmount);
    //alert(cartItem.toString());
    console.log(cartItem.toString());
}
return cartItem 
}

错误告诉我们的一件事是array_element未定义..这又意味着cartArray [int]未定义。

因此,问题可能出在您使用int作为变量名..或实际上cartArray元素实际上未定义。

您可以通过在for循环之前和cartArrray [int]的for循环内的cartArray上添加null检查(检查未定义)来解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM