数组中的javascript数组
问题是:在以下代码中。。。当我调用方法“addtocart”。。。 当数组只有一个元素时,它将正确打印。。。。 但是,如果它有超过1个元素,则会出现如图所示的givs错误: (忽略第一个“404”错误)数组中的javascript数组,javascript,jquery,html,web,Javascript,Jquery,Html,Web,问题是:在以下代码中。。。当我调用方法“addtocart”。。。 当数组只有一个元素时,它将正确打印。。。。 但是,如果它有超过1个元素,则会出现如图所示的givs错误: (忽略第一个“404”错误) var计数器=0; 函数addToCart(productName、productImageURL、productPrice) { 警报(“在addTOCART()方法中”); var cartArray=新数组(); cartArray[counter]=doTask(产品名称、产品图像UR
var计数器=0;
函数addToCart(productName、productImageURL、productPrice)
{
警报(“在addTOCART()方法中”);
var cartArray=新数组();
cartArray[counter]=doTask(产品名称、产品图像URL、产品价格);
//concat(doTask(productName、productImageURL、productPrice));
/*push(doTask(productName、productImageURL、productPrice))*/
警报(“返回原始方法”);
警报(cartArray.length);
对于(var i=0;i
我认为通过多次调用addToCart()
可以使数组包含多个元素
调用addToCart()
后,计数器将+1
。第二次调用addToCart()
时,计数器为1:
// counter = 1;
cartArray[counter]=doTask(productName, productImageURL, productPrice);
// add log to trace cartArray
console.log(cartArray);
cartArray
有2个元素。索引0是未定义的
如何修复
从addToCart()中定义cartArray
:
看起来像是当quantity为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_元素未定义..这意味着cartArray[int]未定义
因此,问题可能是使用int作为变量名..或者实际上cartArray元素未定义
您可以通过在cartArray[int]上的for循环存在之前和for循环内,在cartArray[int]上添加空检查(检查未定义)来解决您的问题。除此之外,缩进伤害了我的眼睛。:(据我所知,数组确实有一个.toString()
方法。避免将迭代变量命名为“int”。这是一个保留的关键字。请改用“i”。让我知道:)@roland~如果你问我的话,这是一个有效的答案。也许不是导致他出现问题的原因,但这是一个有效的加法。@tryingToGetProgrammingStraight从未对Javascript中的数组对..in
执行。
var counter=0;
var cartArray=new Array();
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
}