массивы javascript внутри массива

0

проблема в следующем:... когда я вызываю метод "addtocart"... он корректно печатает, когда массив имеет только один элемент.... но если он содержит более одного элемента, он передает ошибку, как показано в pic: (Игнорировать первую ошибку "404")

Изображение 174551

 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;
}
Теги:
web

3 ответа

1
Лучший ответ

Я думаю, что вы делаете массив more than 1 element, вызывая addToCart() более одного раза.

counter будет +1 после вызова addToCart(). Во второй раз, когда вы вызываете addToCart(), counter равен 1:

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

cartArray имеет 2 элемента. индекс 0 не undefined;

Как исправить

define cartArray из addToCart():

var counter=0;
var cartArray=new Array();
  • 0
    нет это дает ту же ошибку.
  • 0
    @MayurGupta, я обновил ответ, проверь сейчас.
Показать ещё 1 комментарий
0

Одна вещь, о которой сообщает ошибка, заключается в том, что array_element не определен. Это, в свою очередь, означает, что cartArray [int] не определено.

Следовательно, проблема может заключаться в том, что вы используете int как имя переменной.. или фактически элемент cartArray на самом деле не определен.

Вы можете решить свою проблему, добавив нулевые проверки (check for undefined) на cartArray перед существами цикла for и внутри цикла for на cartArrray [int]

0

Похоже, что ваша функция doTask, когда количество равно null, вы не возвращаете ничего. Так, cartArray содержит неопределенный элемент element.try this:

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 
}
  • 0
    нет это дает ту же ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню