为什么我在每个循环中仅添加最后一个元素?

时间:2018-10-22 16:00:44

标签: javascript jquery ajax

我最近正在使用jQuery,但我有一个问题,我想为自己的每件产品增加两个价值。但是目前,它仅将最后一个元素添加到两者中。该如何解决?

我的jquery:

$('.count').on('blur', function getTotalPrice(){
    var name = $(this).parent().parent().find('.name').html();
    var count = $(this).val();

    $.ajax({
        type: "GET",
        url: "cart",
        data: "name=" + name + "&count=" + count,
        success: function(data){

            $("#totalPrice").text("Total price: " + data['totalPrice'].toFixed(2)).wrap("<h4></h4>");
            $("#productCount").text("(" + data['productCount'] + ")");
            console.log(data);

            $.each(data['totalPriceForOne'], function(key, value) {
                $(".totalPriceForOne").text((key * value).toFixed(2)); //field where i add      
            });
        },
        dataType: "json"
    });
});

这是我从jsnon得到的:

> productCount: 2 
> totalPrice: 910  
> totalPriceForOne: {100.00: 1, 810.00: 1}

我需要向每个元素添加totalPriceForOne。如何实现?

3 个答案:

答案 0 :(得分:1)

.text(argument)方法将元素的文本内容替换为参数。

如果将其替换为X,然后立即将其替换为Y,则X不会停留在周围:已被替换。


在循环外创建您的字符串。为循环中的每个新值+=。设置最终结果,并在最后加上text()

或在循环中读取现有值并将其追加:

foo.text( foo.text() + new_text )

或使用append()方法(警告:当心带有HTML的文本)而不是text()

答案 1 :(得分:1)

如果有一个以上的.totalPriceForOne元素,并且每个元素都需要从该对象获得不同的总数,则需要对其进行索引。

var index = 0;
$.each(data['totalPriceForOne'], function(key, value) {
    $(".totalPriceForOne").eq(index++).text((key * value).toFixed(2)); //field where i add      
});

答案 2 :(得分:0)

不确定,但我认为您的问题在这里:

$(".totalPriceForOne").text((key * value).toFixed(2)); //field where i add 

实际上,在您的循环中,您将替换之前的值,而不是您想要的值。我建议您使用一些独特的想法(例如id),而不要使用类选择器。