0

问题是.:在下面的代码中......当我调用方法“addtocart”时......当数组只有一个元素时它会正确打印......但如果它有超过1个元素,它会给出错误,如图所示在图片中:(忽略第一个“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;
}
4

3 回答 3

1

我认为您通过多次more than 1 element调用来制作数组。addToCart()

通话后的counter遗嘱。第二次调用时,是 1:+1addToCart()addToCart()counter

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

cartArray2个元素。索引 0 是undefined

怎么修

定义cartArrayaddToCart()

var counter=0;
var cartArray=new Array();
于 2013-09-22T09:36:00.463 回答
0

当数量为空时,看起来像你的 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 
}
于 2013-09-22T09:36:31.543 回答
0

错误说明的一件事是 array_element 未定义..这反过来意味着 cartArray[int] 未定义。

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

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

于 2013-09-22T09:43:35.380 回答