我有以下代码使用JavaScript
实现简单练习购物车。有一个结账链接,调用getcookie()
来检查存储的cookie的值。如果cookie中没有任何内容,则单击链接警报以进行输入。如果在输入框中输入了非值,则点击"添加到购物车"然后验证完成并且警告错误消息。
由于某种原因,cookie没有从输入字段中获取值。我现在尝试了一段时间,但无法调试代码。最后只显示一个空警报框。我很感激任何调试。提前谢谢。
<script type="text/javascript">
var value;
var productID;
function setItem(abd) {
value = abd.value;
productID = abd.getAttribute("productID");
var intRegex = /^\d+$/;
var numberOfItems;
if (!intRegex.test(value) || (value <= 0)) {
alert('Please Enter valid numberofitem');
} else {
numberOfItems = value;
}
}
function getCookie() {
if (value == undefined) {
alert("There is nothing in the shopping cart!");
} else {
var cookieArray = document.cookie.split(';');
var printHolder = "";
for (var i = 0; i < cookieArray.length; ++i) {
var pairArray = cookieArray[i].split('=');
alert(pairArray[0]);
}
alert(printHolder);
}
}
function setCookie() {
if (value == undefined) {
alert("Please add number of items in text box");
} else {
document.cookie = productID + "=" + value + "; ";
alert(value + " Product(s) with id " + productID +
" has been added to shopping cart!");
}
}
</script>
<a href="javascript:getCookie()"> Checkout </a>
<input name="item-select" id="item-select"
productid="p001" style="width: 50px" onBlur="setItem(this)" >
<button type="button" onclick="setCookie()">Add to cart.</button>
我想要的结果终究就是这样了!
答案 0 :(得分:4)
此代码适用于某些更改。 我正在使用chrome,后来发现了
当文件位于
local machine
并使用文件路径直接加载到浏览器中时,Google Chrome无法创建Cookie。
而是尝试使用localhost.
当您将代码放入服务器时,这肯定有用。 Chrome在这里变得很痛苦!
如果您想通过Javascript创建购物车,请点击此链接。 http://www.smashingmagazine.com/2014/02/create-client-side-shopping-cart/
答案 1 :(得分:-1)
你的getCookie可能会给你不正确的结果。
var cookiearray= document.cookie.split(';');
var toprint="";
for(var i=0; i<cookiearray.length; ++i)
{
var pairArray= cookiearray[i].split('=');
alert(pairArray[0]);
}
alert(toprint);
这里有两件事不对;
1)当你处于for循环中时,每次循环时你总是在警告数组中的第一项 pairArray [0] 你需要将它改为 pairArray [I] 强>
2)您显示的是 空警告 ,因为这是您分配给toprint变量的内容。 - 您在for循环之前为空白字符串分配, 然后您正在警告该变量而不为其指定新值 ,因此您将成为显示一个空警报框! - 还要确保 cookie数组不为空。
尝试一下,享受编码:)
库什