Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2010, 02:59
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Помогите с .each()
Подскажите, пожалуйста... Делаю корзину.. можно изменять количество товаров, от этого изменится и стоимость общая.. Мне нужно подсчитать итоговую стоимость. Вот скриншот:

Вот моя функция обработки и вывода значений:
function GetPrice(){
	var total=0;
	$(".price span").each(function(i){
		total+=parseFloat($(this).text());
		//alert($(this).text());
	});
	$(".total").text("Всего: "+total+" грн.");
}

.price span - это span с ценой каждого товара в отдельности
.total - куда вставлять текст буду

Но это все правильно работает один раз.. Если ставлю в обработчик .keyup input-ов, то все перестает работать... Точнее верно работать.. А стоимость постепенно снижается к нулю, что бы я не вводил. Причем я заметил:
первый раз все нормально считывается и пишет результат
в следующие разы оно проходит на одну сумму меньше, начиная со 2ой, 3ей, 4ой... последней... И в конце концов выдает всегда 8....

Что не так.. помогите, пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2010, 04:49
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Цитата:
Если ставлю в обработчик .keyup input-ов, то все перестает работать...
Код который в keyup давайте тоже
__________________
Нет предела совершенству...
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2010, 10:11
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

alert уже не модно, сейчас используют console.log (firefox, firebug)
и что, console.log($(".price span").length) с каждым запуском уменьшается?
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2010, 12:25
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Полный код JS
Сообщение от sysya Посмотреть сообщение
Код который в keyup давайте тоже
function GetPrice(){
	var total=0;
	$(".price span").each(function(i){
		total+=parseFloat($(this).text());
		//alert($(this).text());
	});
	$(".total").text("Всего: "+total+" грн.");
}

$(function(){
	$(".delete a").click(function(event){
		event.preventDefault();
		var product_id=$(this).attr("href");
		$.get("ajax.php",{q : "basket", action : "delete", product_id : product_id}, function(data){
			window.location.reload();
		});
	});
	
	$(".p_amount").keyup(function(){
		var p = $(this);
		var product_id=$(this).attr("id");
		var amount=$(this).val();
		var amount_pattern=/^[\d]{0,}$/;
		if ((amount_pattern.test(amount)==false || amount==0) && amount!=""){
			$(this).val(1);
			amount=1;
		}
		$.get("ajax.php",{q : "basket", action : "get_price", product_id : product_id, amount : amount}, function(data){
			p.parent().next().html(data);
		});
		GetPrice();
	});
	
	$(".p_amount").change(function(){
		if ($(this).val()==""){
			$(this).val(1);
			$(this).keyup();
		}
	});
});
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2010, 14:12
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Очень интересно, не смог найти ничего и разобраться. Может кто ещё поможет. Не хотелось ба на такой же какахе споткнуться...
__________________
Нет предела совершенству...
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2010, 14:26
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Ага, фигня какая-то... Я так и не разобрался почему .each работает странно... Решил проблему пересчитыванием суммы заказа на стороне сервера и возвращении ответа вместе с стоимостью товара в формате json... Но возможно же как-то подсчитать на стороне клиента...?
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2010, 14:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ошибка в подходе. Данные нужно хранить в памяти, а не на странице. На странице они показываются. В данном случае, следовательно, должен быть массив, в котором хранится товар, количество, цена за штуку. Из этих данных уже формируется то, что надо показать на странице.
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2010, 15:58
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от InviS
Я так и не разобрался почему .each работает странно...
печально, качай скилл отладки
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2010, 16:28
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Сообщение от Kolyaj Посмотреть сообщение
Ошибка в подходе. Данные нужно хранить в памяти, а не на странице. На странице они показываются. В данном случае, следовательно, должен быть массив, в котором хранится товар, количество, цена за штуку. Из этих данных уже формируется то, что надо показать на странице.
кстати на счёт памяти, есть такая штука в jquery - $.data() http://slyweb.ru/jquerydoc/jQuery-data-elem-name.php
Или в куках хранить...
__________________
Нет предела совершенству...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать скрипт для корзины Deep Элементы интерфейса 1 19.06.2010 14:46
Помогите нубу Fongolcs Работа 34 19.05.2010 22:45
Помогите новичку с выпадающим списком interest Элементы интерфейса 5 19.05.2010 13:15
Люди, ПОМОГИТЕ! Bel666 jQuery 11 27.04.2010 15:38