Вход

Просмотр полной версии : не могу открыжить все чекбоксы нажатием одного


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
на сколько я заметил 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
Логично. 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
чтоб он и в ИЕ работал?
На class ругается? Переименуйте во что-нибудь другое, это зарезервированное имя.

мертвыеживотные
24.11.2009, 19:41
для выборки целевых чекбоксов вместо атрибута class лучше юзать name.

Zzet
24.11.2009, 22:55
Octane, ни на что не ругается. Просто не работает

Krondor
13.05.2010, 22:59
так все таки, есть способ сделать все чекбоксы в ИЕ??

Krondor
23.05.2010, 17:50
господа. помогите пожалуйста:
Есть чекбокс: <input type="checkbox" onChange="SetVal(this);">
есть javascript фукнция:
function SetVal(obj) {
var arr=document.getElementById("tree");
var ar = arr.getElementsByTagName("input");
for(i=0;i<ar.length;i++){
if (ar.classname = "checker") {ar.checked=obj.checked;}
}
}
элемент с ID = "tree" - это таблица, внутри которой находятся все чекбоксы, которые нужно включать/выключать
подскажите пожалуйста, почему в ИЕ, при попытке нажать на указанный чекбокс до функции дело не доходит??