Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция суммирует значения флажков без сброса (https://javascript.ru/forum/misc/60836-funkciya-summiruet-znacheniya-flazhkov-bez-sbrosa.html)

Agard 22.01.2016 15:24

Функция суммирует значения флажков без сброса
 
Здравствуйте!
Есть функция, передающая значения отмеченных флажков в группе, html:
<input  name="form[vozvrat][]" type="checkbox" value=" С возвратом" id="vozvrat0" onchange = "getvozvrat()" />
<input  name="form[vozvrat][]" type="checkbox" value=" Выходной день" id="vozvrat1" onchange = "getvozvrat()" />
<input  name="form[vozvrat][]" type="checkbox" value=" Специальное поручение" id="vozvrat2" onchange = "getvozvrat()" />

function getvozvrat()  {
	var j;
  for(j=0;j<document.getElementsByName('form[vozvrat][]').length;j++)
    if (document.getElementById('vozvrat'+j).checked)
	document.getElementById('vozvratp').innerHTML += " " + document.getElementById('vozvrat'+j).value;

}

Если отметить все флажки, получится: С возвратом С возвратом Выходной день С возвратом Выходной день Специальное поручение.
При том, что надо: С возвратом, Выходной день, Специальное поручение.
В javascript очень слабо понимаю, но догадываюсь - нет сброса. Хотя, код ниже (только для радиокнопок) работает нормально.
var i;
  for(i=0;i<document.getElementsByName('form[rejim]').length;i++)
    if (document.getElementById('rejim'+i).checked)
    document.getElementById('rejimp').innerHTML = document.getElementById('rejim'+i).value;

Передача происходит сюда:
<span id="vozvratp">.</span>

Если присваивание в первой функции сделать так как во второй, будет подставляться одно (последнее) значение. Если отметить один чекбокс, будет одно значение, если еще один (другой), то: один+один+другой; если снять флажки с отмеченных, то остаются их значения...
Если не трудно - подскажите пожалуйста - в чем проблема, или ссылку на пример.
Спасибо!

Keramet 22.01.2016 15:58

Добавь
document.getElementById('vozvratp').innerHTML = '';

перед циклом for

Agard 22.01.2016 16:07

Keramet,
Спасибо!
Не сразу сообразил - куда именно вставить, но:
function getvozvrat()  {
document.getElementById('vozvratp').innerHTML = '';
	var j;
  for(j=0;j<document.getElementsByName('form[vozvrat][]').length;j++)
    if (document.getElementById('vozvrat'+j).checked)
	document.getElementById('vozvratp').innerHTML += " " + document.getElementById('vozvrat'+j).value;

}

- работает как и должно!
Спасибо!

Agard 22.01.2016 16:09

Цитата:

Сообщение от Keramet (Сообщение 404642)
Добавь
document.getElementById('vozvratp').innerHTML = '';

перед циклом for

Я сначала только код увидел. Мануал - после того, как поставил уже. :lol:


Часовой пояс GMT +3, время: 16:56.