我知道有几个类似的问题,但在我的案例中似乎都没有。
我有这个JQuery代码片段:
$(document).ready(function() {
CartCount();
$('.product-item input[type="submit"]').on('click', CartCount);
});
function CartCount() {
var cartItems = 0;
var cartItemTypes = iGetCookie("NumberOrdered", 0);
var cartItem;
for(i = 1; i <= cartItemTypes; i++) {
cartItem = String(GetCookie("Order." + i)).split("|");
cartItems += parseInt(cartItem[1]);
}
$('.top-cart-count').html(cartItems);
}
代码在第二次点击后完美运行,但绝不是第一次。第二次单击后,.top-cart-count显示应该在上一次单击时显示的cartItems值。有什么想法吗?
编辑:对不起,如果我不清楚发生了什么。我实际上有多个cookie:1表示用户订购的所有不同类型的项目的总和,以及每个项目类型的1。在每个单独类型的cookie中是一个数组,其中包含索引1处的数量(仅该类型).CardCount()基本上只是总结了所有不同类型的所有数量(如果有任何订购的项目)(至少1种类型) )。基本上,我正在尝试更新项目计数并在提交表单时显示此更新的计数。由于存储不同类型数量的cookie默认设置为0,我认为我不需要在显示之前调用add函数(除非我正在更新值)。
我的HTML:
<form onSubmit="return AddToCart(this)">
<input type="submit" value="Add to Cart">
</form>
答案 0 :(得分:0)
@wow和@zerrone对于由其他东西引起的问题是正确的(另一个异步运行的函数)。当表单 .product-item输入[type =&#34; submit&#34;] 属于提交时,我正在更新 cartItems 。同时,当点击输入时,我试图显示更新的值。出于某种原因,在更新功能( AddToCart )之前调用了显示功能( CartCount )。
我添加了将代码更改为:
$(document).ready(function() {
CartCount();
});
function updateCart(form) {
AddToCart(form);
CartCount();
}
function CartCount() {
var cartItems = 0;
var cartItemTypes = iGetCookie("NumberOrdered", 0);
var cartItem;
for(i = 1; i <= cartItemTypes; i++) {
cartItem = String(GetCookie("Order." + i)).split("|");
cartItems += parseInt(cartItem[1]);
}
$('.top-cart-count').html(cartItems);
}
在我的HTML中,我这样调用 updateCart :<form onSubmit="return updateCart(this)">
感谢所有人的帮助!