Проверка суммы для чекбокса
Добрый день. Извините за дублирование темы, получилось определить проблему более локально. Суть:
есть чекбоксы: <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, время: 08:12. |