Программирование > JavaScript & JScript
Проблема с checkbox\'ом
(1/1)
Altum:
Ребят! Не могу никак решить одну проблему. Уже второй день бьюсь над ней. Я в JavaScript\'e не очень! Поэтому не исключаю, что собака рядом зарыта!
И так. Есть страничка. На ней есть несколько checkbox\'ов (кол-во переменное). Этих checkbox\'ов две группы. У каждой группы есть один главный checkbox, при отметки которого отмечается вся группа. С первой группой у меня всё хорошо! А вот со второй проблема. Вроде всё одинаковое, но во второй группе все выделить одним checkbox\'ом не получается
Вот листинг:
function selectCatAll(){
for(i=1; i
brainkiller:
Мил человек! Ты в итерациях покопайся внимательнее - у тебя ж "i" прирастает от 1 до количества элементов формы, а нумерация в идентификаторах посередине разорвана и начинается сначала.
А вот если заменить brand1 на brand5 и т.д... ))
Кстати, здесь можно обойтись одной функцией вместо двух:
function selectCatAll(nn){
for(i=1; i
Altum:
brainkiller
Спасибо за ответ!
А можно ли итерацию с начала начать? Просто, код я представил условный. На самом деле в "catn" и "brandn" "n" прописывается php-функцией (притом, у каждого своё "n") и сколько этого "n" будет не известно заранее.
--- Цитировать ---Кстати, здесь можно обойтись одной функцией вместо двух:
--- Конец цитаты ---
Я пробовал, но у меня не получилось. И теперь я понимаю почему: я id использовал с приставкой "_all". Если её убрать, то всё работает. А почему с ней не работает?
html_coder:
--- Цитировать ---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:
html_coder
Спасибо большое! Всё получилось! Немного начинаю понимать JavaScript. И в этом немного помогло ещё написание одной программы в Delphi.
Навигация
Перейти к полной версии