Программирование => JavaScript & JScript => Тема начата: Skyer от 04 Марта 2004, 17:32:30
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 17:32:30
........................... и т.д.
Как сделать чекбокс, при выделении которого выделятся все вышеперечисленные чекбоксы?
Искал в Интернете различные варианты CheckAll(), пробовал, ни один не работает.
Название: Выделить всё
Отправлено: Макс от 04 Марта 2004, 17:45:52
сделай себе ящик на mail.ru и посмотри как там такая фича при удалении писем сделана
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 17:54:19
Макс Я смотрел не только на mail.ru, но и в других местах Там в поле "name" стоит не массив, а одна и та же переменная, соответственно для оптимизации под себя в их коде что-то надо менять, а я не знаю что. Может быть, их способ передачи данных и более эффективен, но я же не могу посмотреть их php-код.
Название: Выделить всё
Отправлено: Макс от 04 Марта 2004, 19:10:45
Skyer :) ты думаешь mail.ru на ПХП написан ? попробуй помечать чекбоксы через масив form.elements типа document.form_name.elements[index].checked = true
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 19:12:32
Макс Приведи полный пример кода, я плохо в этом разбираюсь.
Название: Выделить всё
Отправлено: Макс от 04 Марта 2004, 19:26:29
а волшебное слово ? ;)
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 19:44:37
"В темпе!":)
Пожалуйста:)
Название: Выделить всё
Отправлено: Макс от 04 Марта 2004, 19:47:06
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 20:13:13
Я так понимаю, в таком случае элементы массива "a" будут увеличиваться на 1?
Я неправильно описал:( У меня массив item[] не всегда увеличивается на 1, бывают разные значения.
Название: Выделить всё
Отправлено: Skyer от 04 Марта 2004, 20:17:05
Но вообще подожди, я попробую оптимизировать
Название: Выделить всё
Отправлено: Макс от 04 Марта 2004, 21:37:27
Цитировать
Skyer: У меня массив item[] не всегда увеличивается на 1, бывают разные значения.
для моего варианта это не имеет значения. Главное чтобы - все чекбоксы в форме располагались по подряд (чтобы между ними не было других элементов формы), хотя это можно обойти. - и нужно правильно задать начальный и конечный индексы чекбоксов в массиве elements
Название: Выделить всё
Отправлено: Skyer от 13 Апреля 2004, 02:38:51
Макс Спасибо! Последний вариант сработал.
И последний вопрос - как сделать так, чтобы при повторном нажатии этой кнопки галочки снимались?
Название: Выделить всё
Отправлено: ThE0ReTiC от 13 Апреля 2004, 09:43:38
function select_all(frm, first, last) { for(i = first; i <= last; i++) { if (frm.elements[i].type == \'checkbox\'); frm.elements[i].checked = true; } }
Название: Выделить всё
Отправлено: Skyer от 15 Мая 2004, 23:59:33
Макс Не работает.
Название: Выделить всё
Отправлено: Макс от 16 Мая 2004, 14:02:43
для меня фраза "не работает" не несет никакой информации. Хочешь получить ответ, описывай что ты делал и что получил и что хотел получить. Если выводятся ошибки - пиши какие именно
Название: Выделить всё
Отправлено: Skyer от 19 Мая 2004, 20:23:48
ThE0ReTiC
Цитировать
function setCheckboxes(the_form, do_check) { var elts = document.forms[the_form].elements[\'selected_item[]\']; var elts_cnt = (typeof(elts.length) != \'undefined\') ? elts.length : 0;
if (elts_cnt) {
the_form, я так понимаю, имя формы. А в do_check что передано должно быть?
Название: Выделить всё
Отправлено: ThE0ReTiC от 20 Мая 2004, 10:05:59
Skyer ну либо true либо false =)
Название: Выделить всё
Отправлено: Skyer от 20 Мая 2004, 18:31:46
ThE0ReTiC
Твоя функция:
Цитировать
function setCheckboxes(the_form, do_check) { var elts = document.forms[the_form].elements[\'delete[]\']; var elts_cnt = (typeof(elts.length) != \'undefined\') ? elts.length : 0;
if (elts_cnt) { for (var i = 0; i < elts_cnt; i++) { elts.checked = do_check; } } else { elts.checked = do_check; }
return true; }
+
+
Ничего не происходит.
Название: Выделить всё
Отправлено: Skyer от 25 Мая 2004, 18:15:29
Макс Я только сейчас обратил внимание. В твоей функции
Цитировать
function select_all(frm, first, last) { for(i = first; i <= last; i++) { frm.elements.checked = true; } }
параметр last определяет количество всех элементов формы. А между чекбоксами есть ещё элементы формы, их количество может быть совершенно различным(как и самих чекбоксов). У меня программа может подсчитать количество чекбоксов, но количество элементов всего - нет.
Ты написал, что
Цитировать
Главное чтобы - все чекбоксы в форме располагались по подряд (чтобы между ними не было других элементов формы), хотя это можно обойти.
Как это сделать?
Название: Выделить всё
Отправлено: Макс от 25 Мая 2004, 20:35:41