Проверка суммы для чекбокса
Добрый день. Извините за дублирование темы, получилось определить проблему более локально. Суть:
есть чекбоксы: <form id="num3" name="num3" class="hide2" > <h2>Заголовок</h2> <input type="checkbox" name="thirdStep" id="cb1" onchange="checkCB();" /> ch1 <br /> <input type="checkbox" name="thirdStep" id="cb2" onchange="checkCB();"/> ch2 <br /> <input type="checkbox" name="thirdStep" id="cb3" onchange="checkCB();"/> ch3 <br /> <input type="checkbox" name="thirdStep" id="cb4" onchange="checkCB();"/> ch4 <br /> </form> <!--Блок для вывода результата--> <div id="cost"> </div> Нужно что бы при выборе какого либо из чекбоксов в результат добавлялось число, а при снятии галки это же число убиралось. пробовал так(для первого чекбокса):
//проверяем нажатие чекбокса
function checkCB(){
var cb1 = document.getElementById("cb1");
if(cb1.checked) {
c=0;
updatePrice(6, 3);
}else{
c= 0;
updatePrice(-4, 3);
}
}
//считаем и выводим результат.
function updatePrice(sum, whereCome){
var place = document.getElementById("cost");
place.innerHTML = '';
var span = document.createElement("span");
if(whereCome == 3){
c = sum;
}
span.innerHTML = "<h1>Стоимость составит: " + (a+b+c)+"</h1>";
place.appendChild(span);
}
a,b две глобальные переменные из других функций. Дело точно не в них, отключал те функции, результат не менялся. Сейчас такая беда: нажимаю на чекбокс 1 раз происходит +6, всё в порядке, нажимаю 2 раз(снимаю галку) происходит -10. Снова ставлю +10. Так эту 10 туда сюда и гоняю. Вопрос, как с этим бороться? Почему он суммирует числа из чек и анчек? |
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<input type="checkbox" name="thirdStep" id="cb1" /> ch1 <br />
<input type="checkbox" name="thirdStep" id="cb2" /> ch2 <br />
<input type="checkbox" name="thirdStep" id="cb3" /> ch3 <br />
<input type="checkbox" name="thirdStep" id="cb4" /> ch4 <br />
<div id="cost">0</div>
<script>
var elems = document.querySelectorAll('[id^="cb"]'),
cost = document.getElementById('cost');
for(var i=0; i<elems.length; i++) elems[i].onchange = function() {
cost.innerHTML = +cost.innerHTML + (+this.checked || -1); /*(this.checked ? 1 : -1)*/
}
</script>
</body>
</html>
|
Большое человеческое спасибо!
|
| Часовой пояс GMT +3, время: 21:56. |