我正在尝试获取用户附加到购物车的商品小计,但似乎无法让它发挥作用。
基本上我有一个项目列表,他们有一个添加到购物车按钮,该按钮链接到一个jquery函数,该函数将一些html附加到购物车:
$('#object01').click(function(){
if ($('#slideShoppingCart').is(":hidden")) {
$('#slideShoppingCart').slideToggle(500);
$('#objectList').append('<div class="shoppingCartObject"><img src="img/leather-backpack-cart.jpg" width="75" height="75"><div class="cartObjectInfo"><h1 class="cartTitle">Gentleman's Satchel</h1><div class="closeCartObject">x</div><h2 class="cartDescription">Chestnut Leather</h2><h3 class="quantity">QTY. 1</h3><h3 class="cartPrice">£<span class="price">300</span></h3></div></div>')
} else {
$('#objectList').append('<div class="shoppingCartObject"><img src="img/leather-backpack-cart.jpg" width="75" height="75"><div class="cartObjectInfo"><h1 class="cartTitle">Gentleman's Satchel</h1><div class="closeCartObject">x</div><h2 class="cartDescription">Chestnut Leather</h2><h3 class="quantity">QTY. 1</h3><h3 class="cartPrice">£<span class="price">300</span></h3></div></div>')
}
});
$('.closeCartObject').live('click', function() {
$(this).parent().parent().remove();
return false;
});
我将价格包含在一个名为price的类中。 然后,我的购物车中有一个标识为总数的范围。
我有这个功能来计算价格,这似乎不起作用。
$(document).ready(function getTotal(){
var total = 0;
$('.price').each(function(){
total += parseFloat(this.innerHTML)
});
$('#total').text(total);
getTotal();
});
答案 0 :(得分:1)
你的职能:
$(document).ready(function getTotal(){
var total = 0;
$('.price').each(function(){
total += parseFloat(this.innerHTML)
});
$('#total').text(total);
getTotal();
});
包含从getTotal()调用getTotal()。您无意中递归。
编辑: 好吧,试试这个:(如果你的代码有一个jsfiddle会更容易)
$(document).ready(function ()
{
var total = 0;
$('.price').each(function()
{
total += parseFloat(this.innerHTML)
});
$('#total').text(total);
});
答案 1 :(得分:1)
似乎你的计算逻辑工作
var total = 0;
$('.price').each(function(){
total += parseFloat(this.innerHTML)
});
但问题是你在自己内部调用了“getTotal()”函数。
尝试
$(document).ready(function() {
var getTotal = function(){
var total = 0;
$('.price').each(function(){
total += parseFloat(this.innerHTML);
});
return total;
}
$('#total').text(getTotal());
});
答案 2 :(得分:0)
尝试将你的JS放在<script defer="defer">
标签中,这意味着它最后运行 - 你的函数可能会尝试在Dom完成之前进行计算(尽管这可能只是早期版本的jQuery)
或者,添加一个setTimeout以在几秒钟后调用您的子总函数。
您可能还想为您的功能添加一些警报,确保其尝试定位的字段正确定位。
推迟:How exactly does <script defer="defer"> work?
setTimeout:https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout