проблема в следующем:... когда я вызываю метод "addtocart"... он корректно печатает, когда массив имеет только один элемент.... но если он содержит более одного элемента, он передает ошибку, как показано в pic: (Игнорировать первую ошибку "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()
более одного раза.
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();
Одна вещь, о которой сообщает ошибка, заключается в том, что array_element не определен. Это, в свою очередь, означает, что cartArray [int] не определено.
Следовательно, проблема может заключаться в том, что вы используете int как имя переменной.. или фактически элемент cartArray на самом деле не определен.
Вы можете решить свою проблему, добавив нулевые проверки (check for undefined) на cartArray перед существами цикла for и внутри цикла for на cartArrray [int]
Похоже, что ваша функция 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
}