Автор Тема: Проблема с checkbox\'ом  (Прочитано 3461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Altum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://chersky.ru/
Проблема с checkbox\'ом
« : 09 Декабря 2006, 05:35:43 »
Ребят! Не могу никак решить одну проблему. Уже второй день бьюсь над ней. Я в JavaScript\'e не очень! Поэтому не исключаю, что собака рядом зарыта!
И так. Есть страничка. На ней есть несколько checkbox\'ов (кол-во переменное). Этих checkbox\'ов две группы. У каждой группы есть один главный checkbox, при отметки которого отмечается вся группа. С первой группой у меня всё хорошо! А вот со второй проблема. Вроде всё одинаковое, но во второй группе все выделить одним checkbox\'ом не получается
Вот листинг:

  "http://www.w3.org/TR/html4/loose.dtd">





   
      
         
            
            
            
            
            
            
            
            
         
      

               
            

               
            

               
            

               
            

               
            

               
            

               
            

               
            

   




Помогите совет!

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проблема с checkbox\'ом
« Ответ #1 : 09 Декабря 2006, 06:57:03 »
Мил человек! Ты в итерациях покопайся внимательнее - у тебя ж "i" прирастает от 1 до количества элементов формы, а нумерация в идентификаторах посередине разорвана и начинается сначала.

А вот если заменить brand1 на brand5 и т.д... ))

Кстати, здесь можно обойтись одной функцией вместо двух:

function selectCatAll(nn){
for(i=1; iif (document.formName.elements.id== nn +i){
if(document.formName.elements[nn].checked==true){
document.formName.elements.checked = true;
} else {
document.formName.elements.checked = false;
};
};
};
};

а вызывать ее так:

input id="cat" name="cat_all" type="checkbox" OnClick="selectCatAll(this.id)"

input id="brand" name="cat_all" type="checkbox" OnClick="selectCatAll(this.id)"

Оффлайн Altum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://chersky.ru/
Проблема с checkbox\'ом
« Ответ #2 : 09 Декабря 2006, 16:29:04 »
brainkiller
Спасибо за ответ!
А можно ли итерацию с начала начать? Просто, код я представил условный. На самом деле в "catn" и "brandn" "n" прописывается php-функцией (притом, у каждого своё "n") и сколько этого "n" будет не известно заранее.


Цитировать
Кстати, здесь можно обойтись одной функцией вместо двух:

Я пробовал, но у меня не получилось. И теперь я понимаю почему: я id использовал с приставкой "_all". Если её убрать, то всё работает. А почему с ней не работает?

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Проблема с checkbox\'ом
« Ответ #3 : 09 Декабря 2006, 20:14:37 »
Цитировать
Altum:
А можно ли итерацию с начала начать?


Можно, а в чём проблема? Обнулил переменную и вперед.

Цитировать
Altum:
Я пробовал, но у меня не получилось. И теперь я понимаю почему: я id использовал с приставкой "_all".


Да и почему ты использовал id c приставкой _all? )))

А я попробовал у меня получилось



<html>
<
head>
<
script language="JavaScript">
	
function 
selectCheckboxesGroup(group_name /*префикс группы чекбоксов*/main_checkbox_id /*ID главного чекбокса, который поджигает остальные*/)
	
{
	
	
var 
form document.forms[\'formName\']; //Форма
	
	
var main_checkbox = document.getElementById(main_checkbox_id); //Чекбокс, который включает остальные чекбоксы
	
	
for([B]var[/B] i = 1; i < form.elements.length; i++) //Проходимся по всем элекментам формы
	
	
{
	
	
	
//Отмечаем только те чекбоксы, которые принадлежат нужной группе
	
	
	
if(form.elements[i].name.indexOf(group_name) != -1)
	
	
	
{
	
	
	
	
form.elements[i].checked = main_checkbox.checked;
	
	
	
}
	
	
}
	
}
</script>
</head>

<body style="margin-top:0pt;margin-left:1pt;color:#666666">
	
<form name="formName" action="index.php" method="GET">
	
	
<table border="0" cellspacing="0" cellpadding="0">
	
	
	
<tr>
	
	
	
	
<td>
	
	
	
	
	
<input id="cat_all" name="cat_all" type="checkbox" OnClick="selectCheckboxesGroup(\'cat\', \'cat_all\')">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'cat1\' name="cat_7" type="checkbox">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'cat2\' name="cat_3" type="checkbox">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'cat3\' name="cat_1" type="checkbox">
	
	
	
	
</td>
	
	
	
	

	
	
	
	
<td>
	
	
	
	
	
<input id="brand_all" name="brand_all" type="checkbox" OnClick="selectCheckboxesGroup(\'brand\', \'brand_all\')">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'brand1\' name="brand_7" type="checkbox">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'brand2\' name="brand_1" type="checkbox">
	
	
	
	
</td>
	
	
	
	
<td>
	
	
	
	
	
<input id=\'brand3\' name="brand_13" type="checkbox">
	
	
	
	
</td>
	
	
	
</tr>
	
	
</table>
	
</form>
</body>
</html>


Обрати внимание на выделенную жирным шрифтом конструкцию var i, так вот внутри функции желательно делать именно так, иначе переменная будет определена в глобальном контексте.

Цитировать
Altum:
Просто, код я представил условный. На самом деле в "catn" и "brandn" "n" прописывается php-функцией (притом, у каждого своё "n") и сколько этого "n" будет не известно заранее.



Как ты понимаешь сам, теперь абсолютно все равно чем прописывается n, функция будет работать корректно!

Цитировать
Altum:
Я в JavaScript\'e не очень!


Чтобы быть немного лучше можно почитать например здесь http://developer.mozilla.org/en/docs/JavaScript

Оффлайн Altum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://chersky.ru/
Проблема с checkbox\'ом
« Ответ #4 : 25 Декабря 2006, 03:13:38 »
html_coder
Спасибо большое! Всё получилось! Немного начинаю понимать JavaScript. И в этом немного помогло ещё написание одной программы в Delphi.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28