|
|
|
Junior Member
      
участник
Last Login: 02.01.2002 1:38
Сообщ.: 14,
Visits: 155
|
|
ситуация такова(начну издалека): у меня есть список товаров(вернее, меню ) каждому товару соответствует айди в базе и т.д. Я делаю выборку и выкидываю данные браузеру. Далее мне нужно произвести подсчет того, сколько и какого товара заказал клиент, причем, с выводом итоговой суммы в инпут в он-лайн(т.е. значание этого инпута изменяеться как только клиент выбрал новый товар и т.дю без перезагрузки страницы).Для этого я инициализирую массив длинной в кол-во выводимых товаров и каждому эл-ту массива соответсвует та цена, которая будет заплачена за товар.(получаеться, что-то типа массив[айди_товара]=цена_заказаного_товара_с_этим айди. для простоты будем считать, что айди товара пробегает все значения от 0 до кол-ва записей.... т.е. массив используеться на 100% и нет избыточности)... посе каждого изменения по событию onChange я вызываю ф-ю для вненсения соответствующих изменений в массив и й-ю пересчета общей суммы(т.е. она суммирует все эл-ты массива и присваивает этот результат инпуту)..... теперь самое интересное... на некоторых вполне нормальных компах(пень 3 500) эта страница попросут виснет и забирает всю доступную память... соответственно, нужно ее как-то оптимизировать.. а вот как - ума не приложу? Есть ли примеры, где можно обойтись без этого массива?
(вот мои мучения: http://pizza.od.ua/beta)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 01.05.2003 9:57
Сообщ.: 218,
Visits: 2 399
|
|
>по событию onChange я вызываю ф-ю для вненсения соответствующих >изменений в массив и й-ю пересчета общей суммы(т.е. она суммирует >все эл-ты массива и присваивает этот результат инпуту
Общую сумму можно пересчитать проще, не сканируя каждый раз массив:
Общая сумма = Общая сумма + цена выбранного товара * (новое количество выбранного товара - старое количество выбранного товара)
|
|
|
|
|
Junior Member
      
участник
Last Login: 02.01.2002 1:38
Сообщ.: 14,
Visits: 155
|
|
| да, но проблема в том, что кол-во выбраного товара у меня в select, а вот как поймать предыдущее значение кол-ва товара я ума не приложу.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 01.05.2003 9:57
Сообщ.: 218,
Visits: 2 399
|
|
| Можно по onFocus для select-а сохранять его значение в переменной (одной и той же для всех select-ов), а по onChange - считывать это значение, оно и будет "предыдущим".
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.05.2006 23:09
Сообщ.: 1 293,
Visits: 14 276
|
|
mozhno v array dobavit pole "amount_old" dopolnitelno k sushestvuushim i rabotat s nim dinamicheski - eto budet staroe kolichestvo
novoe - "amount_new"
------------------------------------
Anatoly Lubarsky
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.05.2006 23:09
Сообщ.: 1 293,
Visits: 14 276
|
|
vot podumal: mozhno dazhe dobavit polya:
sum_old, sum_new,
i togda dlya izmenenia obshei summy voobshe ne nado probegat ves massiv, a izmenyat SUM_TOTAL:
SUM_TOTAL=SUM_NEW-SUM_OLD izmennennogo ilementa
------------------------------------
Anatoly Lubarsky
|
|
|
|
|
Supreme Being
      
участник
Last Login: 02.05.2006 23:09
Сообщ.: 1 293,
Visits: 14 276
|
|
v predydushem soobshenii konechno:
SUM_TOTAL=SUM_TOTAL+(SUM_NEW-SUM_OLD) izmennenogo elementa
udachi..
------------------------------------
Anatoly Lubarsky
|
|
|
|
|
Supreme Being
      
участник
Last Login: 01.05.2003 9:57
Сообщ.: 218,
Visits: 2 399
|
|
To luber: хранить sum_new и sum_old в массиве необязательно. Достаточно одной sum_old для всех select-ов. А sum_new - это просто установленное пользователем значение select-а. См. мои предыдущие сообщения.
To filfob: Предлагаю вообще убрать из программы этот массив. Вся необходимая информация лежит в select-ах и переменных sum_old и sum_total.
|
|
|
|