长时间用户第一次发布海报。当书籍让我失望时,这个网站给了我许多答案。对我的问题。
我正在尝试创建购物车。每次单击子/添加按钮时,我想创建一个新的cookie。我以为我可以用这段代码完成它;
var cookieName = document.cookie;
var splitCookieName;
splitCookieName = cookieName.split(";");
for( var i =0; i <= splitCookieName.length; i++)
{
var cartItemNumber;
if (splitCookieName[i].slice(0,8) == "cartItem")
{
cartItemNumber = parseInt(splitCookieName[i].slice(8));
alert(cartItemNumber);
itemCount = cartItemNumber + 1;
alert(itemCount);
}
}
var newItem = "cartItem" + itemCount;
setCookie(newItem, "", expiryDate);
然而,每次我运行它时,它只会提醒我1,对于cartitemnumber,和2,对于项目计数。所以我想我的问题是为什么它会一直重置cookie?我以为我读到的东西是因为它不在服务器上,所以它的行为不同。这是真的?或者我的代码中有错误我不明白。
项目计数的初始值为1.
我也遇到了在此代码中获取最后一个警报的问题。谷歌Chrome直接上升甚至不喜欢它并且不会运行它,allSelects [i] .id存在问题并且由于某种原因不喜欢选项部分。但是,当我在firefox中运行时,它并没有提醒我最后一行。但是,如果我将该行放在for循环中,它会一遍又一遍地运行它。代码在这里。
setCookie(newItem, "", expiryDate);
productType = document.getElementById("product");
priceType = document.getElementById("price");
setField(newItem, productType.id, productType.value, expiryDate);
setField(newItem, priceType.id, priceType.value, expiryDate);
allSelects = new Array;
allSelects = document.getElementsByTagName("select");
for(var i = 0; i <= allSelects.length; i++)
{
setField(newItem, allSelects[i].id, allSelects[i].options[allSelects[i].selectedIndex].text, expiryDate);
}
alert(getField(newItem, "quantity") + " " + getField(newItem, "product") + " added to your shopping cart.");}
非常感谢任何帮助。