@Richswitch
junior

В чем проблема js калькулятора?

Привет!
Есть ссылка на codepan. Этот калькулятор работает только "в одну сторону".
Попробуйте активировать одну кнопку радио и пару чекбоксов, затем поменять кнопку радио и убрать чекбоксы, как видно цена результат уменьшаться.
Я пробовал это пофиксить но у меня почему-то не получается.
Что нужно добавить?
<div class="wrap-skoda">
     <input type="radio" value="3008" id="skodalogo" name="model">      
</div>
<div class="wrap-volk">
     <input type="radio" value="3009" id="vwlogo" name="model">
</div> 

<div class="wrap-additional">
  <input class="chBox" type="checkbox" value="300" id="add1" name="model">
     <label for="add1"><p>Доп.Опция 1</p></label>
                      <br />
     <input class="chBox" type="checkbox" value="500" id="add2" name="model">
     <label for="add2"><p>Доп.Опция 2</p></label>
                      <br />
     <input class="chBox" type="checkbox" value="900" id="add3" name="model">
     <label for="add3"><p>Доп.Опция 3</p></label>
                      <br />
     <input class="chBox" type="checkbox" value="700" id="add4" name="model">
     <label for="add4"><p>Доп.Опция 4</p></label>
            <p></p>
     <div class="result-wrap">
            <p>Сумма заказа: <input id="result" type="text" value="0" disabled></p>
     </div>

(function(){

var skoda = document.getElementById('skodalogo'),
    volk  = document.getElementById('vwlogo');

var skodaVal = skoda.value,
    volkVal  = volk.value;
var result;
var prev = null;

var chBox = document.querySelectorAll('input[type=checkbox]');

skoda.addEventListener('change', getValSk, false);
volk.addEventListener('change', getValVk, false);

function getValSk() {
   result = document.getElementById('result').value = parseInt(skodaVal) + ' руб.';
  return result;
};
function getValVk() {
  result = document.getElementById('result').value = parseInt(volkVal) + ' руб.';
  return result;
};


  [].forEach.call(chBox, function(item, i, arr) {
    item.addEventListener('change', function() {
      if(arr[i].checked) {
        result = parseInt(arr[i].value) + parseInt(result);
        document.getElementById('result').value = result + ' руб.';
    } else { 
      result = parseInt(result) - parseInt(arr[i].value);
      document.getElementById('result').value = result + ' руб.';
    }

    }, false);
  });

}());
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Что нужно добавить?

В первую очередь нужно убрать - отдельные функции расчёта суммы. Ну а добавить общую. Которая будет считать сумму полностью, и висеть на элементах, от значений которых зависит сумма, как обработчик события change.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы