JQuery добавить к переменной в цикле - PullRequest
2 голосов
/ 15 октября 2011

Я пытаюсь добавить переменную и получить итоговую цену в конце цикла, добавить ее к значению в теге 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 ]

4 голосов
/ 15 октября 2011

Попробуйте следующее:

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);

Вам нужно инициализировать общую цену и преобразовать цену / цену аддона в число с плавающей точкой, чтобы работать с ними как числами.

Надеюсь, это поможет.

3 голосов
/ 15 октября 2011

попробуйте это:

totalprice += parseInt(obj.price);
3 голосов
/ 15 октября 2011

Вы должны инициализировать 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);
1 голос
/ 15 октября 2011

В этом есть пара вещей. Сначала вы не показали, где и как инициализируется переменная 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);
1 голос
/ 15 октября 2011

Вам нужно создать экземпляр totalprice перед циклом, так как totalprice перестанет существовать вне контекста $.each.

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