Почему в каждом цикле просто добавляется последний элемент? - PullRequest
0 голосов
/ 22 октября 2018

Я недавно работаю с 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 голосов
/ 22 октября 2018

Не уверен, но я думаю, что ваша проблема здесь:

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

Фактически в вашем цикле вы замените предыдущее значение, которое не то, что вы ищете.Я предлагаю вам использовать некоторые мыслить уникально (например, id) вместо использования селектора класса.

0 голосов
/ 22 октября 2018

Если имеется более одного элемента .totalPriceForOne, и каждый из них должен получить различную сумму от объекта, вам нужно проиндексировать его.

var index = 0;
$.each(data['totalPriceForOne'], function(key, value) {
    $(".totalPriceForOne").eq(index++).text((key * value).toFixed(2)); //field where i add      
});
0 голосов
/ 22 октября 2018

Метод .text(argument) заменяет текстовое содержимое элемента аргументом.

Если вы замените его на X, а затем сразу же замените его на Y, то X не собирается задерживаться: Он был заменен.


Создайте свою строку вне цикла.+= каждое новое значение для него в цикле.Установите конечный результат с помощью text() в конце.

Или прочитайте существующее значение в цикле и добавьте к нему:

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

Или используйте метод append() (предупреждение:Не упустите текст с HTML в нем) вместо text()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...