Помогите пожалуйста у меня уже мозг взорвался искать решение.Исходные данные: Имеем продукт за $100 (цена выводится из базы данных по средствам php) и имеем несколько опций (HTML- Radio input на несколько вариантов) +$10, +$15, +$20.
При выборе одного из radio вариантов к 100 прибавляется допустим 10, но обновляется данная инфа уже только в корзине.
Задача: Сделать динамическое обновление цены после выбора одного из radio переключателей, то есть выбрали вариант +10 и цена сразу стала 110.
Решение: - Подвязываюсь к radio инпуту по средствам события onclick и пишу скрипт
- Обращаюсь к html классу "цены" и сохраняю его значение в переменную
- Вытягиваю значение выбранного radio варианта в отдельную переменную
- Складываю численные значения обеих переменных и записываю в отдельную переменную
- Обращаюсь к html классу "цены" и записываю туда новое значение из переменной
Но на деле оказалось, что первый прогон даёт верное значение допустим 100+10=110, однако при повторном клике значение становится 120, то есть уже считается как 110+10=120, что и логично, ведь я не обнулял значение переменной и она так и осталась 110.
Для исправления ситуации я принял решение использовать цикл while и break, что бы была возможность после первого прогона обнулить значение переменной и на повторное нажатие использовать исходное значение, но данный цикл тупо подвешивает всю страницу.
Собственное сам код:
<input price="<?php echo $option_value['price']; ?>"
type="radio"
name="option[<?php echo $option['product_option_id']; ?>]"
value="<?php echo $option_value['product_option_value_id']; ?>"
onclick=
"
//сохраняем значение исходной цены
price1 = $('.spec-price').text();
real_price = price1.substring(2);
//сохраняем значение исходной цены
//сохраняем значение выбранного radio
price_select = $(this).attr('price');
price_select_new = price_select.substring(2);
//сохраняем значение выбранного radio
//проводим сложение
new_price = +real_price + +price_select_new;
//проводим сложение
//сохраняю значение цены в отдельную переменную
real = real_price;
//сохраняю значение цены в отдельную переменную
//цикл: пока новая цена не равна старой цене, то записываем значение новой цены вместо старой, а когда новая цена становится раной старой цене (которая после первого прогона реально становится равна новой), то прерываем цикл
и обнуляем значение новой цены
while(new_price != real ){
document.getElementById('span.price-now').innerHTML = '$ ' + new_price;
if(new_price==real) break;
new_price=0;
}
alert(new_price);
"
/>
Собственно, где косяк?