Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не могу открыжить все чекбоксы нажатием одного (https://javascript.ru/forum/events/5591-ne-mogu-otkryzhit-vse-chekboksy-nazhatiem-odnogo.html)

nenastiy 25.10.2009 15:04

не могу открыжить все чекбоксы нажатием одного
 
Всем доброго времени суток)
У меня проблема - не могу открыжить все чекбоксы при нажатии одного сверху (пример как на майле сделано - можешь открыжить все письма, если поставишь крыжик сверху)...у меня динамический список этих самых чекбоксов (которые надо открыжить) и всегда в верхней строчке таблицы рисуется этот главный чекбокс :) ...все чекбоксы имеют id которое мне известно (от 1 до 24)...и вот что я написала:
Код:

                                      <script>
                                        <!--
                                        document.write('<input
                name=sel[]
                type=checkbox
                value='+'0'+'
                onclick='+'\"'+'var n=1; for (n=1; n<=3; n++)
                                        {
                                          document.getElementByID(n)=n.checked;
                                        };'+'\"'+'\/>'
                                                      );
                                        // -->
                                      </script>

и ничего не работает :cry: ...даже этот главный чекбокс не отображается...помогите пожалуйста...
заранее всем очень благодарна

Krondor 28.10.2009 09:32

я решил подобную проблему следующим образом:
Код:

function checkall() {
        var val=0;
        if (document.getElementById("all").checked == 1) {val = 1;}
        var id = '';
        for (n=1; n<=5; n++) {
                id = n;
                document.getElementById(id).checked = val;
        }
        return false;
}

и соотвественно на главный чекбокс вешается на onClick данная функция.

и еще: не работать может потому, что у тебя написано getElementByID, попробуй последнюю букву сделать маленькой, как в моем примере. на сколько я заметил javascript очень капризный язык и одна буква в неправильном регистре может послужить проблемой на целых два дня. :)

e1f 28.10.2009 19:24

Цитата:

Сообщение от Krondor (Сообщение 33694)
на сколько я заметил javascript очень капризный язык и одна буква в неправильном регистре может послужить проблемой на целых два дня.

Логично. AAA и aaa - две разные переменные. Case-sensitive, однако.

alexKniaz 28.10.2009 20:38

Если можно сделать все чекбоксы одного класса, то можно так:
<script type="text/javascript">
function myGetElementsByClassName(class){
var arr=document.getElementsByTagName('*');
var res=new Array();
for(i=0;i<arr.length;i++){
if(arr.item(i).className==class){
res.push(arr.item(i));
}
}
return res;
}
 
function chkclick(obj){
var arr=myGetElementsByClassName('checker');
for(i=0;i<arr.length;i++){
arr[i].checked=obj.checked;
}
}
</script>
<input type="checkbox" onclick="chkclick(this);">Мейн-бокс<br />
<input type="checkbox" class="checker"><br />
<input type="checkbox" class="checker"><br />
<input type="checkbox" class="checker"><br />
<input type="checkbox" class="checker"><br />

Krondor 29.10.2009 09:16

Цитата:

Сообщение от e1f (Сообщение 33776)
Логично. AAA и aaa - две разные переменные. Case-sensitive, однако.

не только с переменными проблема.. я целый день ловил глюк, написав selectedindex вместо selectedIndex. с тех пор стараюсь никогда про case-sensitive не забывать. :)

Zzet 24.11.2009 18:32

alexKniaz Хороший у Вас код, но можно ли сделать так, чтоб он и в ИЕ работал?

subzey 24.11.2009 19:07

Отличная идея использовать классы, чтобы выделить элементы.
Однако, исполнение несколько хромает:

Не забывайте, что у браузера уже может быть родной метод document.getElementsByClassName, который работает на два порядка шустрее, чем пребор документа. А может и не быть.

Не забывайте, что у элемента может быть несколько классов. Так что проверка
element.className == class
верна далеко не всегда. Лучше использовать
var classRegExp = new RegExp("(^|\\s)+" + class + "(\\s|$)+");
classRegExp.test(element.className)

Octane 24.11.2009 19:15

Цитата:

Сообщение от Zzet
чтоб он и в ИЕ работал?

На class ругается? Переименуйте во что-нибудь другое, это зарезервированное имя.

мертвыеживотные 24.11.2009 19:41

для выборки целевых чекбоксов вместо атрибута class лучше юзать name.

Zzet 24.11.2009 22:55

Octane, ни на что не ругается. Просто не работает


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