Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2013, 10:16
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

Некоректная сумма для checkbox
Добрый день. Собственно вопрос такой, на странице есть 3 формы. 2 с радио кнопками, одна с чекбоксами, и в зависимости от выбранных пунктов изменяется итоговая цена. С радио кнопками всё в порядке, а с чекбоксом 1 раз прибавляется нормальное значение, потом вычитается это значение умноженное на 2, включаю чекбокс, и прибавляется снова умноженное 2. Т. е. по первым элементам 55+10=65, 65+5=70. Снимаю чекбокс 70-5=... 60. Ставлю чекбокс 60+5=70...
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);

}
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2013, 10:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

new_guy,
что checked что не checked всё едино строки 62 и 64
да и html в таких случаях непомешает.
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2013, 10:39
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

Вот 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>
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2013, 14:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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 - ничего не происходило...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX - Контент только для основной категории, но не для субкатегорий или страниц nightkon AJAX и COMET 5 21.11.2016 13:22
Удалению метаданных в JPEG lorents Библиотеки/Тулкиты/Фреймворки 2 22.04.2012 21:02
Реализация игрового поля для игры "Точки" last-art Events/DOM/Window 7 22.04.2012 03:18
Фреймворк для разработки расширений для Chrome chernikov Библиотеки/Тулкиты/Фреймворки 0 05.03.2012 17:51