Javascript.RU

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

Проверка суммы для чекбокса
Добрый день. Извините за дублирование темы, получилось определить проблему более локально. Суть:
есть чекбоксы:
<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 туда сюда и гоняю. Вопрос, как с этим бороться? Почему он суммирует числа из чек и анчек?
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2013, 06:53
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<!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>

Последний раз редактировалось ruslan_mart, 25.09.2013 в 07:00.
Ответить с цитированием
  #3 (permalink)  
Старый 25.09.2013, 07:18
Аватар для new_guy
Интересующийся
Отправить личное сообщение для new_guy Посмотреть профиль Найти все сообщения от new_guy
 
Регистрация: 09.08.2011
Сообщений: 27

Большое человеческое спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка цвета через функцию .css() сбрасывает цвет для :hover xintrea jQuery 4 18.08.2012 15:38
добавление стилей для множества элементов ??? Общие вопросы Javascript 7 14.06.2012 01:50
Некорректная работа get(set)Attribute в IE для элементов img back to back Internet Explorer 15 09.06.2012 16:52
Удалению метаданных в JPEG lorents Библиотеки/Тулкиты/Фреймворки 2 22.04.2012 21:02