Некоректная сумма для checkbox
Добрый день. Собственно вопрос такой, на странице есть 3 формы. 2 с радио кнопками, одна с чекбоксами, и в зависимости от выбранных пунктов изменяется итоговая цена. С радио кнопками всё в порядке, а с чекбоксом 1 раз прибавляется нормальное значение, потом вычитается это значение умноженное на 2, включаю чекбокс, и прибавляется снова умноженное 2. Т. е. по первым элементам 55+10=65, 65+5=70. Снимаю чекбокс 70-5=... 60. Ставлю чекбокс 60+5=70...:nono:
var a=0, b=0, c=0; //проверяем первую форму function checkForm1(){ var firstBlock = document.getElementsByName("firstStep"); var summ1; var here = 1; for(var i=0; i<firstBlock.length; i++){ if(firstBlock[i].checked){ a = 0; if(i == 0){ summ1 = 55; updatePrice(summ1, here); }else if(i == 1){ summ1=3; updatePrice(summ1, here); }else if(i == 2){ summ1=4; updatePrice(summ1, here); }else if(i == 3){ summ1=45; updatePrice(summ1, here); } } } } //проверяем вторую форму function checkForm2(){ var secondBlock = document.getElementsByName("secondStep"); var summ2; var here = 2; for(var i=0; i<secondBlock.length; i++){ if(secondBlock[i].checked){ b=0; if(i == 0){ summ2 = 10; updatePrice(summ2, here); }else if( i == 1){ summ2 = 33; updatePrice(summ2, here); }else if( i == 2){ summ2 = 34; updatePrice(summ2, here); } } } } //проверяем 3ю форму function checkForm3(cb){ var here = 3; cb = document.getElementById("cb1"); c=0; if(cb == cb1){ if(cb.checked){ updatePrice(-5, here); }else{ updatePrice(-5, here); } } } //считаем и выводим результат. function updatePrice(sum, whereCome){ var place = document.getElementById("cost"); place.innerHTML = ''; var span = document.createElement("span"); if(whereCome == 1){ a = sum; } if(whereCome == 2){ b = sum; }if(whereCome == 3){ c = sum; } span.innerHTML = "<h1>Стоимость составит: " + (a+b+c)+"</h1>"; place.appendChild(span); } |
new_guy,
что checked что не checked всё едино строки 62 и 64 да и html в таких случаях непомешает. |
Вот html:
<h1>Калькулятор стоимости </h1> <!--Форма типа --> <form id="num1" onclick="checkForm1();"> <h2>Тип</h2> <input type="radio" name="firstStep" /> для дома <br /> <input type="radio" name="firstStep" /> для офиса <br /> <input type="radio" name="firstStep" /> Каталог <br /> <input type="radio" name="firstStep" /> корпоративный <br /> </form> <!--Форма с выбором дизайна--> <form id="num2" class="hide1" onclick="checkForm2();" > <h2>Дизайн</h2> <input type="radio" name="secondStep" /> Минималистичный <br /> <input type="radio" name="secondStep" /> Стандартный <br /> <input type="radio" name="secondStep" /> Премиум <br /> </form> <!--Форма с выбором функциональных особенностей --> <form id="num3" name="num3" class="hide2" > <h2>Функциональные особенности</h2> <input type="checkbox" name="thirdStep" id="cb1" onchange="checkForm3(cb1)"/> check1 <br /> <input type="checkbox" name="thirdStep" /> check2 <br /> <input type="checkbox" name="thirdStep" /> check3 <br /> </form><hr /> <!--стоймость--> <div id="cost"> </div> <form> <input type="submit" class="myButton centered" value="Продолжить" onclick="javascript:window.location='[[~4]]'"> </form> |
new_guy, я собрал все в кучу...
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> var a=0, b=0, c=0; //проверяем первую форму function checkForm1(){ var firstBlock = document.getElementsByName("firstStep"); var summ1; var here = 1; for(var i=0; i<firstBlock.length; i++){ if(firstBlock[i].checked){ a = 0; if(i == 0){ summ1 = 55; updatePrice(summ1, here); }else if(i == 1){ summ1=3; updatePrice(summ1, here); }else if(i == 2){ summ1=4; updatePrice(summ1, here); }else if(i == 3){ summ1=45; updatePrice(summ1, here); }; }; }; }; //проверяем вторую форму function checkForm2(){ var secondBlock = document.getElementsByName("secondStep"); var summ2; var here = 2; for(var i=0; i<secondBlock.length; i++){ if(secondBlock[i].checked){ b=0; if(i == 0){ summ2 = 10; updatePrice(summ2, here); }else if( i == 1){ summ2 = 33; updatePrice(summ2, here); }else if( i == 2){ summ2 = 34; updatePrice(summ2, here); }; }; }; }; //проверяем 3ю форму function checkForm3(cb){ var here = 3; cb = document.getElementById("cb1"); c=0; if(cb == cb1){ if(cb.checked){ updatePrice(-5, here); }else{ updatePrice(-5, here); }; }; }; //считаем и выводим результат. function updatePrice(sum, whereCome){ var place = document.getElementById("cost"); place.innerHTML = ''; var span = document.createElement("span"); if(whereCome == 1){ a = sum; }; if(whereCome == 2){ b = sum; }if(whereCome == 3){ c = sum; }; span.innerHTML = "<h1>Стоимость составит: " + (a+b+c)+"</h1>"; place.appendChild(span); }; </script> </head> <body> <body> <h1>Калькулятор стоимости </h1> <!--Форма типа --> <form id="num1" onclick="checkForm1();"> <h2>Тип</h2> <input type="radio" name="firstStep" /> для дома <br /> <input type="radio" name="firstStep" /> для офиса <br /> <input type="radio" name="firstStep" /> Каталог <br /> <input type="radio" name="firstStep" /> корпоративный <br /> </form> <!--Форма с выбором дизайна--> <form id="num2" class="hide1" onclick="checkForm2();" > <h2>Дизайн</h2> <input type="radio" name="secondStep" /> Минималистичный <br /> <input type="radio" name="secondStep" /> Стандартный <br /> <input type="radio" name="secondStep" /> Премиум <br /> </form> <!--Форма с выбором функциональных особенностей --> <form id="num3" name="num3" class="hide2" > <h2>Функциональные особенности</h2> <input type="checkbox" name="thirdStep" id="cb1" onchange="checkForm3(cb1)"/> check1 <br /> <input type="checkbox" name="thirdStep" /> check2 <br /> <input type="checkbox" name="thirdStep" /> check3 <br /> </form><hr /> <!--стоймость--> <div id="cost"> </div> <form> <input type="submit" class="myButton centered" value="Продолжить" onclick="javascript:window.location='[[~4]]'"> </form> </body> </body> </html> Выбрал 1-вый радио в первой форме - 55 Выбрал 1-вый радио во второй форме - 65 --- Потом сколько бы не клацал на check1 - ничего не происходило... |
Часовой пояс GMT +3, время: 11:58. |