<table>
<tr>
<td class="price">1500.00</td>
<td class="push">
<input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>;
<table>
<td class="price">1500.00</td>
<td class="push">
<input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>;
<table>
<td class="price">1500.00</td>
<td class="push">
<input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>;
Сумма: <span id="total">4500.00</span>
Общая сумма за сегодня: <span id="today_sum">5500.00</span>
При нажатии на кнопку удаления из корзины строка с товаром удаляется, а из значения в <span id="total"> должно вычитаться значение цены удаляемого товара (в данном случае 1500), в <span id="today_sum"> должно происходить то же самое (т.е. при удалении всех товаров в <span id="total"> должен остаться 0, а в <span id="today_sum"> должна быть 1000).
Делаю таким способом:
$('.del_good').live('click', function() {
$(this).closest('table').remove();
sum=0;
$('.push').each(function(){
var m=$(this).prev().html();
sum+=parseInt(m);
});
var t=parseInt($('#today_sum').html());
var tt=parseInt($('#total').html());
t+=parseInt(tt);
$('#total').html(sum.toFixed(2));
$('#today_sum').html(t.toFixed(2));
});
В первом span'е (сумма) разность высчитывается верно, проблема со вторым span'ом (общая сумма): высчитывает криво. Если изменить строку:
var t=parseInt($('#today_sum').html());
на
var t=1000;
считает верно. Не могу понять почему так происходит, ведь
var t=parseInt($('#today_sum').html()); alert(t);
возвращает 1000.
Спустя 24 минуты, 8 секунд (28.06.2011 - 01:38) Invis1ble написал(а):
l@pteff
Цитата |
проблема со вторым span'ом (общая сумма): высчитывает криво |
Что значит криво? Какое ожидаемое значение и что происходит на самом деле?
Спустя 9 минут, 17 секунд (28.06.2011 - 01:47) l@pteff написал(а):
изначально в корзине 3 товара и значение в <span id="today_sum"> у нас 5500.00
удаляем 1-й товар: значение увеличивается: 16500.00, вместо 4000.00, удаляем второй: ещё увеличивается: 22500.00 вместо 2500.00, ну и после удаления третьего-24000.00 вместо 1000.00
удаляем 1-й товар: значение увеличивается: 16500.00, вместо 4000.00, удаляем второй: ещё увеличивается: 22500.00 вместо 2500.00, ну и после удаления третьего-24000.00 вместо 1000.00
Спустя 16 минут, 34 секунды (28.06.2011 - 02:04) Invis1ble написал(а):
l@pteff
Смотри, во-первых, у тебя есть значительный косяк в разметке - отсутствует открывающий тег <tr>, из-за этого могут некорректно срабатывать селекторы.
Во-вторых, ты, имхо, сильно все усложнил. Зачем пробегать в цикле по всем элементам, чтоб вычислить новую сумму? Это ведь лишняя нагрузка, почему бы не вычесть просто сумму удаляемого товара?
Смотри, во-первых, у тебя есть значительный косяк в разметке - отсутствует открывающий тег <tr>, из-за этого могут некорректно срабатывать селекторы.
Во-вторых, ты, имхо, сильно все усложнил. Зачем пробегать в цикле по всем элементам, чтоб вычислить новую сумму? Это ведь лишняя нагрузка, почему бы не вычесть просто сумму удаляемого товара?
$('.del_good').live('click', function() {
var deduct = parseInt($(this).parent().prev().html());
var new_t = parseInt($('#total').html()) - deduct;
var new_tt = parseInt($('#today_sum').html()) - deduct;
$(this).closest('table').remove();
$('#total').html(new_t.toFixed(2));
$('#today_sum').html(new_tt.toFixed(2));
});
Спустя 19 часов, 6 минут, 8 секунд (28.06.2011 - 21:10) l@pteff написал(а):
сейчас вычитает лучше но всё ж чуть неточно:
в корзине 3 товара: значение в <span id="total"> равно 4500.00
значение в <span id="today_sum"> равно 5500.00
удаляем 1 товар: значение в <span id="total"> равно 0.00
значение в <span id="today_sum"> равно 1000.00
удаляем 2 товара: значение в <span id="total"> равно -4500.00
значение в <span id="today_sum"> равно -3500.00
удаляем 3 товара: значение в <span id="total"> равно -9000.00
значение в <span id="today_sum"> равно -8000.00
при удалении одного вычитается не стоимость одного (1500.00) а сразу трёх товаров, равная 4500.00
в корзине 3 товара: значение в <span id="total"> равно 4500.00
значение в <span id="today_sum"> равно 5500.00
удаляем 1 товар: значение в <span id="total"> равно 0.00
значение в <span id="today_sum"> равно 1000.00
удаляем 2 товара: значение в <span id="total"> равно -4500.00
значение в <span id="today_sum"> равно -3500.00
удаляем 3 товара: значение в <span id="total"> равно -9000.00
значение в <span id="today_sum"> равно -8000.00
при удалении одного вычитается не стоимость одного (1500.00) а сразу трёх товаров, равная 4500.00
Спустя 6 минут, 18 секунд (28.06.2011 - 21:16) SerginhoLD написал(а):
$('.del_good').click(function()
{
var t = parseInt($(this).parents('table').find('.price').text());
var tt = parseInt($('#total').text());
$('#total').text(tt - t);
// как-то так , не проверял
// ну и во втором спане также вычтешь
});
Спустя 17 минут, 41 секунда (28.06.2011 - 21:34) l@pteff написал(а):
SerginhoLD,
не, мне именно через live() нужно (таблицы с названиями и ценами вставляются аяксом).
Вот так делал:
но считает так же как я описал в посте выше ;)
не, мне именно через live() нужно (таблицы с названиями и ценами вставляются аяксом).
Вот так делал:
$('.del_good').live('click', function() {
var t = parseInt($(this).parents('table').find('.price').text());
var tt = parseInt($('#total').text());
var ttt = parseInt($('#today_sum').text());
$(this).closest('table').remove();
$('#total').text(tt - t);
$('#today_sum').text(ttt - t);
});
но считает так же как я описал в посте выше ;)
Спустя 10 минут, 9 секунд (28.06.2011 - 21:44) SerginhoLD написал(а):
l@pteff ты сначала удаляешь зачемто таблицу, потом пытаешься взять из нее значения? может наоборот?
проверил, отлично работает:
проверил, отлично работает:
$('.del_good').live('click', function()
{
var t = parseInt($(this).parents('table').find('.price').text());
var tt = parseInt($('#total').text());
$('#total').text(tt - t);
$(this).parents('table').remove();
});
Спустя 12 минут, 31 секунда (28.06.2011 - 21:57) l@pteff написал(а):
Цитата |
отлично работает |
согласен, а в <span id="today_sum"> что вставить? Из-за него косяк и происходит

Спустя 4 минуты, 33 секунды (28.06.2011 - 22:01) SerginhoLD написал(а):
l@pteff
у тебя с логикой и математикой совсем беда?
у тебя с логикой и математикой совсем беда?
$('.del_good').live('click', function()
{
var t = parseInt($(this).parents('table').find('.price').text());
var tt = parseInt($('#total').text());
var ttt = parseInt($('#today_sum').text());
$('#total').text(tt - t);
$('#today_sum').text(ttt - t);
$(this).parents('table').remove();
});
Спустя 7 минут, 12 секунд (28.06.2011 - 22:09) l@pteff написал(а):

Спустя 7 минут, 43 секунды (28.06.2011 - 22:16) l@pteff написал(а):
причём из обоих спанов
Спустя 6 минут, 58 секунд (28.06.2011 - 22:23) Invis1ble написал(а):
l@pteff
У меня предложенный мной вариант работает корректно. Можешь сам проверить, создай отдельный файл:
Все четко работает. Так что, ищи ошибку в другом месте.
У меня предложенный мной вариант работает корректно. Можешь сам проверить, создай отдельный файл:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.del_good').live('click', function() {
var deduct = parseInt($(this).parent().prev().html());
var new_t = parseInt($('#total').html()) - deduct;
var new_tt = parseInt($('#today_sum').html()) - deduct;
$(this).closest('table').remove();
$('#total').html(new_t.toFixed(2));
$('#today_sum').html(new_tt.toFixed(2));
})
})
</script>
</head>
<body>
<table>
<tr>
<td class="price">1500.00</td>
<td class="push"><input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>
<table>
<tr>
<td class="price">1500.00</td>
<td class="push"><input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>
<table>
</tr>
<td class="price">1500.00</td>
<td class="push"><input type="button" class="del_good" title="Удалить из корзины"/></td>
</tr>
</table>
Сумма: <span id="total">4500.00</span>
Общая сумма за сегодня: <span id="today_sum">5500.00</span>
</body>
</html>
Все четко работает. Так что, ищи ошибку в другом месте.
Спустя 8 минут, 6 секунд (28.06.2011 - 22:31) l@pteff написал(а):
спс за помощь, буду искать ошибку в других местах скрипта