Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2017, 07:29
Новичок на форуме
Отправить личное сообщение для solanos Посмотреть профиль Найти все сообщения от solanos
 
Регистрация: 09.02.2017
Сообщений: 7

Раздельное суммирование значений чекбоксов
Здравствуйте.

Есть такой код:

<form name="Sum">
  <input type="checkbox" value="1"/>
  <input type="checkbox" value="2"/>
  <input type="checkbox"/>
  <input type="checkbox" value=""/>
  <input type="checkbox" value="3"/>
  <input type="checkbox" value="4"/>
  <input type="checkbox" value="5"/>
  <output id="rezultat">Сумма: 0</output>
</form>


var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    n[j].checked ? itog += parseFloat(n[j].value) : itog;
    document.getElementById('rezultat').innerHTML = 'Сумма: ' + itog;
}


Данный скрипт суммирует значения чекбоксов без учета id или классов.
Подскажите, пожалуйста, как получить разные суммы значений, например

<form name="Sum">
  <input type="checkbox" class="class1" value="1"/>
  <input type="checkbox" class="class1" value="2"/>
  <input type="checkbox" class="class1" value="3"/>
  <input type="checkbox" class="class1" value="4"/>
  <input type="checkbox" class="class1" value="5"/>
  
  <input type="checkbox" class="class2" value="6"/>
  <input type="checkbox" class="class2" value="7"/>
  <input type="checkbox" class="class2" value="8"/>
  <input type="checkbox" class="class2" value="9"/>
  <input type="checkbox" class="class2" value="10"/>
  <output id="rezultat1">Сумма: 0</output>
  <output id="rezultat2">Сумма: 0</output> 
</form>


Причем отмечать нужно не все чекбоксы, а лишь определенного класса, но эти две суммы менялись и выводились бы одновременно.

Спасибо.

Последний раз редактировалось solanos, 09.02.2017 в 09:03.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2017, 08:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от solanos
выводились бы одновременно.
куда?
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2017, 08:57
Новичок на форуме
Отправить личное сообщение для solanos Посмотреть профиль Найти все сообщения от solanos
 
Регистрация: 09.02.2017
Сообщений: 7

<output id="rezultat1">Сумма: 0</output>
<output id="rezultat2">Сумма: 0</output>
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2017, 09:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от solanos
пожалуйста, как получить разные суммы значений
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$(':checkbox').click(function(){
		var typ=this.className;
		var summ=0;
		$('.'+typ+':checked').each(function(){
			summ+=parseInt(this.value);
		});
		$('span.'+typ).text(summ);
	});
});
</script>
</head>
<body>
<form name="Sum">
	<div>
		<input type="checkbox" class="class1" value="1"/>
		<input type="checkbox" class="class1" value="2"/>
		<input type="checkbox" class="class1" value="3"/>
		<input type="checkbox" class="class1" value="4"/>
		<input type="checkbox" class="class1" value="5"/>
	</div>
	<div>
		<input type="checkbox" class="class2" value="6"/>
		<input type="checkbox" class="class2" value="7"/>
		<input type="checkbox" class="class2" value="8"/>
		<input type="checkbox" class="class2" value="9"/>
		<input type="checkbox" class="class2" value="10"/>
	</div>
	<div>
		<output id="rezultat1">Сумма: <span class=' class1'>0</span></output>
		<output id="rezultat2">Сумма: <span class=' class2'>0</span></output> 
	</div>
</form>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2017, 10:11
Новичок на форуме
Отправить личное сообщение для solanos Посмотреть профиль Найти все сообщения от solanos
 
Регистрация: 09.02.2017
Сообщений: 7

Большое спасибо за ответ. Но нужно, чтобы отмечались чекбоксы class1, а сумма значений чекбоксов class2 выводилась автоматически. Собственно говоря, поля чекбоксов class2 должны быть скрытыми.

Последний раз редактировалось solanos, 09.02.2017 в 10:25.
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2017, 10:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

solanos, тогда зачем вообще те "скрытые" чекбоксы? Кто их будет чекать, если их не видно?
Ответить с цитированием
  #7 (permalink)  
Старый 09.02.2017, 10:35
Новичок на форуме
Отправить личное сообщение для solanos Посмотреть профиль Найти все сообщения от solanos
 
Регистрация: 09.02.2017
Сообщений: 7

Тогда как сделать, чтобы при отметки чекбокса, менялись сразу 2 суммы. Выходит, этот скрипт не подходит. Ksa, Вы очень помогли. Еще раз спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 09.02.2017, 10:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от solanos
как сделать, чтобы при отметки чекбокса, менялись сразу 2 суммы
Как вариант, держать второй параметр в том же чекбоксе, но в data-атрибуте... Тогда значение value будет писаться в одну сумму, а значение data-параметра в другую...
Ответить с цитированием
  #9 (permalink)  
Старый 09.02.2017, 10:39
Новичок на форуме
Отправить личное сообщение для solanos Посмотреть профиль Найти все сообщения от solanos
 
Регистрация: 09.02.2017
Сообщений: 7

Да, выходит без HTML5 никак.
Ответить с цитированием
  #10 (permalink)  
Старый 09.02.2017, 10:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от solanos
выходит без HTML5 никак
Это не HTML5.
Атрибуты у тегов существуют очень давно...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование значений ячеек таблиц (значения подставляются динамически) andrjuxa_z Общие вопросы Javascript 1 05.01.2016 15:15
Суммирование значений отдельных групп атрибутов value отмеченных radio studentPas Общие вопросы Javascript 10 18.06.2015 18:47
Копирование значений чекбоксов в поле tai jQuery 2 16.07.2014 04:36
Суммирование значений по всем динамически добавленным полям Joliat Общие вопросы Javascript 2 12.02.2014 16:01
Суммирование значений полей BLP Элементы интерфейса 6 05.11.2012 12:43