Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Автоматическое снятие выделения checkbox'ов (https://javascript.ru/forum/dom-window/12231-avtomaticheskoe-snyatie-vydeleniya-checkbox%27ov.html)

Ghost 07.10.2010 22:28

Автоматическое снятие выделения checkbox'ов
 
дравствуйте.

Подскажите, пожалуйста, почему не работает функция, которая по событию onclick должна выделять (с этим всё понятно), а затем снимать выделение (с этим проблема) с группы checkbox'ов.

var globvar = false;
 
 function checkForm(classname)
 {
   var select = document.getElementsByName(classname);
 
   for(i=0; i < select.length; i++)
   {
 
     if(select[i].type == 'checkbox')
     {
       select[i].checked = (!globvar) ? true : false; 
       globvar = (!globvar) ? true : false; 
     }
 
   }
 }


Как её откорректировать, чтобы она работала?
Буду признателен за помощь.

Sweet 08.10.2010 00:15

Вынеси 13 строчку из цикла for

Ghost 10.10.2010 21:03

Спасибо за совет, но не помогло.
Что-то ещё можно сделать?

exec 11.10.2010 07:37

function checkForm(name) {
	checkForm.checked = !checkForm.checked;
	var nodes = document.getElementsByName(name);
	for (var i = 0; i < nodes.length; i++) {
		nodes[i].checked = checkForm.checked;
	}
}

Ghost 11.10.2010 14:07

exec,

спасибо, но тоже не работает...

рони 11.10.2010 15:49

Ghost,
Может быть Вы полностью приведёте нерабочий код, но все подсказанные примеры при правильном использовании должны были сработать.
для примера :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
</head>
<body>
<form name="form" action="http://">
<input type="checkbox" name="" />
<input type="checkbox" name="" />
<input type="checkbox" name="" />
<input type="button" name="" value="go"  onclick="checkForm('form')"/>
</form>
<form name="form2" action="http://">
<input type="checkbox" name="" />
<input type="checkbox" name="" />
<input type="checkbox" name="" />
<input type="button" name="" value="go2"  onclick="checkForm('form2')"/>
</form>

<script language="JavaScript" type="text/javascript">
function checkForm(name) {
    var form = document.forms[name] ;
    form.globvar = !form.globvar;
    var a = form.getElementsByTagName('input');
    for (var i = 0; i < a.length; i++) if (a[i].type == "checkbox") a[i].checked = form.globvar
};
</script>
</body>
</html>

Ghost 13.10.2010 20:04

Да, ваши примеры все рабочие. Я нашёл в чём у меня была ошибка.
<input type="checkbox" onclick="checkForm('check1')">
<input type="checkbox" onclick="checkForm('check2')">


Это checkbox'ы по событию которых запускается функция.
А это пример checkbox'ов, которые нужно выделять (к примеру):
<input type="checkbox" name="check1[]" value="1">
...
<input type="checkbox" name="check1[]" value="n">

<input type="checkbox" name="check2[]" value="1">
...
<input type="checkbox" name="check2[]" value="n">


Но дело в том, что мне нужно имя элементов именно в виде массива - для дальнейшей работы PHP-скрипта.
Подскажите, пожалуйста, как можно подправить функцию, чтобы выделялись именно элементы массива по его имени, переданному в функцию.


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