jquery在循环中添加变量

时间:2011-10-14 21:52:18

标签: jquery variables

我正在尝试添加一个变量并在循环结束时获取总价并将其添加到span标记中的值并更新它。我不确定如何处理jquery,我通常用php来做。这是我尝试过但我一无所获。

$.each(data, function(key, obj) {
    items.push('<li id="' + obj.id + '">' + obj.title + '€' + obj.price + '</li>');
    totalprice += obj.price
});

$("#addonPrice").html($("#addonPrice").text() + totalprice);

5 个答案:

答案 0 :(得分:4)

尝试以下方法:

var totalprice = 0;

$.each(data, function(key, obj){
    items.push('<li id="' + obj.id + '">' + obj.title + '€' + obj.price + '</li>');
    totalprice = totalprice + parseFloat(obj.price);
});
$('#addonPrice').html(parseFloat($('#addonPrice').text()) + totalprice);

您需要初始化总价并将价格/插件价格转换为浮点数,以便将其作为数字使用。

我希望这会有所帮助。

答案 1 :(得分:3)

您应该在循环之前将totalprice初始化为零,并在添加之前将parseFloat()应用于obj.price

var totalprice = 0;
$.each(data, function(key, obj) {
    items.push('<li id="' + obj.id + '">' + obj.title + '€' + obj.price + '</li>');
    totalprice += parseFloat(obj.price);
});
$("#addonPrice").html(parseFloat($("#addonPrice").text()) + totalprice);

答案 2 :(得分:3)

试试这个:

totalprice += parseInt(obj.price);

答案 3 :(得分:1)

您需要在循环之前实例化totalprice,因为总价将不再存在于$.each的上下文之外。

答案 4 :(得分:1)

有很多事情要做。首先,您没有显示totalprice变量的初始化位置和方式。通常这应该在循环之外完成。其次,根据obj.price的类型,您使用的+=运算符可能会执行字符串连接而不是数字添加。此外,.text函数返回一个字符串,因此您需要在循环结束时执行添加时将其强制转换为数字:

var totalprice = 0;
$.each(data, function(key, obj) {
    items.push('<li id="' + obj.id + '">' + obj.title + '€' + obj.price + '</li>');
    totalprice += Number(obj.price);
});

$("#addonPrice").html(parseFloat($("#addonPrice").text()) + totalprice);