Фикс калькулятора

173
29 июля 2018, 18:20

let persons = document.getElementsByClassName('counter-block-input')[0], 
  restDays = document.getElementsByClassName('counter-block-input')[1], 
  place = document.getElementById('select'), 
  totalValue = document.getElementById('total'), 
  personsSum = 0, 
  daysSum = 0, 
  total = 0; 
 
totalValue.innerHTML = 0; 
 
persons.addEventListener('change', function() { 
  personsSum = +this.value; 
  total = (daysSum + personsSum) * 4000; 
  if (restDays.value === '') { 
    totalValue.innerHTML = 0; 
  } else { 
    totalValue.innerHTML = total; 
  } 
}); 
 
restDays.addEventListener('change', function() { 
  daysSum = +this.value; 
  total = (daysSum + personsSum) * 4000; 
  if (persons.value === '') { 
    totalValue.innerHTML = 0; 
  } else { 
    totalValue.innerHTML = total; 
  } 
}); 
 
place.addEventListener('change', function() { 
  if (restDays.value === '' || persons.value === '') { 
    totalValue.innerHTML = 0; 
  } else { 
    totalValue.innerHTML = total * this.options[this.selectedIndex].value;; 
  } 
});
<div class="counter" id="price"> 
  <div class="counter-title">Рассчитайте стоимость вашего отдыха 
  </div> 
  <div class="counter-block"> 
    <div class="counter-block-option">Количество людей</div> 
    <input type="number" min="1" step="1" class="counter-block-input"> 
  </div> 
  <div class="counter-block"> 
    <div class="counter-block-option">На сколько дней</div> 
    <input type="number" min="1" step="1" class="counter-block-input"> 
  </div> 
  <div class="counter-block"> 
    <div class="counter-block-option">Выберете базу</div> 
    <select name="place" id="select"> 
      <option id="mumbai" value="1">Индия, Мумбай</option> 
      <option id="kerala" value="1.5">Индия, Керала</option> 
      <option id="varanasi" value="1.8">Индия, Варанаси</option> 
    </select> 
  </div> 
  <div class="counter-total"> 
    Общая сумма<br> 
    <span id="total">20456</span> 
  </div> 
</div>

Если ввести 2 числа и потом очистить один инпут, калькулятор все равно рассчитывает стоимость.
Понимаю, нужно как-то проверку переписать, но не понимаю как.

READ ALSO
Illegal break statement

Illegal break statement

Собственно текст ошибки:

182
Почему цикл начинается с 1?

Почему цикл начинается с 1?

Почему проход второго цикла начинается с 1, а не с 0?

176
Как менять позиции html блоков c помощью js?

Как менять позиции html блоков c помощью js?

Есть такая задача: Имеется пять html блоков, 4 по углам и один в центре, при нажатии на любой из угловых блоков центральный должен занимать позицию...

179
JS массив в Excel

JS массив в Excel

Есть массив объектов, которые нужно вывести в excel файлВсё делается правильно, но данные все слипаются, все узко и ничего не понятно

244