Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Подсчёт и занесение в массив чекнутых инпутов (https://javascript.ru/forum/dom-window/18841-podschjot-i-zanesenie-v-massiv-cheknutykh-inputov.html)

(Sandr) 17.07.2011 23:42

Подсчёт и занесение в массив чекнутых инпутов
 
Всем драсте)

Есть n-ое количество чекбоксов (сами чекбоксы не находятся внутри тэга <form> )

К примеру есть 6 чекбоксов:
<input type="checkbox" name="name_smile" id="id_1">
<input type="checkbox" name="name_smile" id="id_2">
<input type="checkbox" name="name_smile" id="id_3">
<input type="checkbox" name="name_smile" id="id_4">
<input type="checkbox" name="name_smile" id="id_5">
<input type="checkbox" name="name_smile" id="id_6">

при нажатии на ссылку запускается функция подсчитывающая количество выбранных чекбоксов и заносящая их значения в массив.
Подскажите, как это сделать? С чекбоксами никогда не работал, по этому не знаю даж с чего начать..

kobezzza 17.07.2011 23:50

Входным параметром указываешь атрибут name группы своих чекбоксов
function checkCbox(groupName) {
		if (!groupName) { return false; }
		
		var group = document.getElementsByName(groupName), result = [], i;
		
		for (i = group.length; i--;){
			if (group[i].checked === true) { result.push(group[i].value); }
		}
		
		return result;
	}

(Sandr) 18.07.2011 00:15

kobezzza,
спасибо. Когда читал про getElementsByName, почти додумал до подобного кода, только с другим циклом и условием. Но т.к. по привычке поставил getElementsByName то в начале ошибку начало выдавать((

(Sandr) 18.07.2011 23:58

kobezzza,
Не вышло с этим кодом....
Вот все чекбоксы, в том виде как они сейчасть у меня выводятся.

1) 21 <input name="name_smile" id="id_21" value="id_21" type="checkbox">

2) 10 <input name="name_smile" id="id_10" value="id_10" type="checkbox"> 

3) 12 <input name="name_smile" id="id_12" value="id_12" type="checkbox"> 

4) 15 <input name="name_smile" id="id_15" value="id_15" type="checkbox">

5) 19 <input name="name_smile" id="id_19" value="id_19" type="checkbox">


(перед инпутом выводится его ид в бд, это просто для наглядности)

Отмечаю все чекбоксы, нажимаю, на ссылку, которая запускает функцию с этим содержанием:
var group = document.getElementsByName('name_smile'), result = [], i;
    for (i = group.length; i--;){
       if (group[i].checked) { result.push(group[i].value); alert(result[i]);}
        }


вылетают алерты с таким содержанием:
undefined
undefined
id_12
id_15
id_19


Вообще не понимаю в чём дело, в роде бы всё правильно, но 2 элемента не определены. Подскажите пожалуйста, почему?

Matre 19.07.2011 09:55

result[i] = group[i].value;


У Вас элементы перебирались в цикле в обратном порядке, а .push() добавлял элементы в прямом порядке.

(Sandr) 19.07.2011 12:15

Matre,
Спасибо, теперь всё работает)


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