Всем привет! В общем есть форма. Изначально в ней уже есть определенная цена (500). У пользователя есть вариант выбрать дополнительные услуги, у которых тоже есть своя цена. И нужно, чтобы цена за выбранные услуги суммировалась с изначальной ценой (например, 500 + выбранная услуга за 300 будет = 800р если я уберу галочку то цена останется 500).
Вот мой код HTML :
<form name="Sum">
<div class="form-check">
<label><input type="checkbox" class="form-check-input" name="" id="service1" value="300" cost="300"> услуга 1 (300₽)</label>
</div>
<div class="form-check">
<div class="mb-3">
<label><input type="checkbox" class="form-check-input" name="" id="service2" value="500" cost="500" > услуга 2 (500₽)</label>
</div>
</div>
</form>
<div class="pr-5">
<strong>Всего: </strong> <span id="sum">500</span> <i >₽</i>
</div>
Вот код JS. ЗДЕСЬ ПРОБЛЕМА в том, что при прибавлении цены из чекбоксов, у меня прибавляется цена, которая уже до этого была здесь. т.е если я уберу галочку с чекбокса, цена останется. И если я добавлю чекбокс снова, то цена просто прибавится к той цене, что там была, в общем бред получается:
var s = document.forms.Sum,
d = s.querySelectorAll('input[type="checkbox"]');
s.onchange = function() { // начало работы функции сложения
var tariff = document.getElementById('sum').innerHTML
console.log(typeof(tariff)); // проверяю тип
var tarif = Number(tariff) // задаю числовой тип
console.log("тут тариф " + tarif)
console.log(typeof(tarif));
itog = 0
var n = s.querySelectorAll('[type="checkbox"]')
for(var j=0; j<n.length; j++)
if (n[j].checked){
tarif += parseFloat(n[j].value)
}else{
tarif
}
tarif
console.log(tarif)
document.getElementById('sum').innerHTML = tarif;
}
Вот другой код JS. ЗДЕСЬ ПРОБЛЕМА в том, что при активации чекбокса, у меня пропадает первоначальное значение.
ЕСЛИ я уберу itog=0 то браузер выдаст ошибку:
var s = document.forms.Sum,
d = s.querySelectorAll('input[type="checkbox"][value=""]');
s.onchange = function() { // начало работы функции сложения
var n = s.querySelectorAll('[type="checkbox"]'),
itog = 0;
for(var j=0; j<n.length; j++)
if (n[j].checked){
itog += parseFloat(n[j].value)
}else{
itog;
}
document.getElementById('sum').innerHTML = itog;
}
Знаю, что ответ где-то близко, но я уже всю голову сломал с этим. Буду очень благодарен за помощь!