Просмотр полной версии : не могу открыжить все чекбоксы нажатием одного
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: ...даже этот главный чекбокс не отображается...помогите пожалуйста...
заранее всем очень благодарна
я решил подобную проблему следующим образом:
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 очень капризный язык и одна буква в неправильном регистре может послужить проблемой на целых два дня. :)
на сколько я заметил 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 />
Логично. AAA и aaa - две разные переменные. Case-sensitive, однако.
не только с переменными проблема.. я целый день ловил глюк, написав selectedindex вместо selectedIndex. с тех пор стараюсь никогда про case-sensitive не забывать. :)
alexKniaz Хороший у Вас код, но можно ли сделать так, чтоб он и в ИЕ работал?
Отличная идея использовать классы, чтобы выделить элементы.
Однако, исполнение несколько хромает:
Не забывайте, что у браузера уже может быть родной метод document.getElementsByClassName, который работает на два порядка шустрее, чем пребор документа. А может и не быть.
Не забывайте, что у элемента может быть несколько классов. Так что проверка element.className == class верна далеко не всегда. Лучше использовать
var classRegExp = new RegExp("(^|\\s)+" + class + "(\\s|$)+");
classRegExp.test(element.className)
чтоб он и в ИЕ работал?
На class ругается? Переименуйте во что-нибудь другое, это зарезервированное имя.
мертвыеживотные
24.11.2009, 19:41
для выборки целевых чекбоксов вместо атрибута class лучше юзать name.
Octane, ни на что не ругается. Просто не работает
так все таки, есть способ сделать все чекбоксы в ИЕ??
господа. помогите пожалуйста:
Есть чекбокс: <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" - это таблица, внутри которой находятся все чекбоксы, которые нужно включать/выключать
подскажите пожалуйста, почему в ИЕ, при попытке нажать на указанный чекбокс до функции дело не доходит??
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot