как поиметь все checkbox с разными именами?

rubalex

Новичок
как поиметь все checkbox с разными именами?

если у меня чекбоксы имеют одно имя то ф-я отрабатывает нормально.


function cbox() {
var p=document.getElementsByName('x[]');
var v=p[0].checked^1;
for (var i=0; i<p.length; i++) p.checked=v;
return false;
}


<input type="checkbox" name="x[]" />1<br />
<input type="checkbox" name="x[]" />2<br />
<input type="checkbox" name="x[]" />3<br />
<input type="checkbox" name="x[]" />4<br />


а если разные

<input type="checkbox" name="v[1]" />1<br />
<input type="checkbox" name="v[2]" />2<br />
<input type="checkbox" name="v[3]" />3<br />
<input type="checkbox" name="v[4]" />4<br />

то как??
 

rotoZOOM

ACM maniac
то может быть так:
function cbox() {
var p=document.getElementsByName('x[1]');
var v=p[0].checked^1;
for (var i=1;; i++){
p=document.getElementsByName('x['+i+']');
if (!p)break;
p[0].checked=v;
}
return false;
}
 

rubalex

Новичок
Автор оригинала: rotoZOOM
то может быть так:
function cbox() {
var p=document.getElementsByName('x[1]');
var v=p[0].checked^1;
for (var i=1;; i++){
p=document.getElementsByName('x['+i+']');
if (!p)break;
p[0].checked=v;
}
return false;
}
а как это сделать по одинаоквому id?? (чтоб с именами не морочиться)

<input type="checkbox" id=5 name="v[1]" >1<br>
<input type="checkbox" id=5 name="v[2]" >2<br>
<input type="checkbox" id=5 name="v[3]" >3<br>
<input type="checkbox" id=5 name="v[4]" >4<br>
 

SelenIT

IT-лунатик :)
rubalex, с одинаковым id они скорее, эээ... (см. сабж) в общем, возьмут верх :) Потому что сие есть нарушение стандарта, и браузеры вольны артачиться в этой ситуации как им заблагорассудится.

Лучше уж поморочиться с именами, а-ля вот так:
Код:
for (var i=0, inps=document.getElementsByTagName('input'), inp; inp=inps[i]; i++) {
   if (inp.name.match(/v\[\d+\]/)) inp.checked = true;
}
 

rubalex

Новичок
Автор оригинала: SelenIT
rubalex, с одинаковым id они скорее, эээ... (см. сабж) в общем, возьмут верх :) Потому что сие есть нарушение стандарта, и браузеры вольны артачиться в этой ситуации как им заблагорассудится.

Лучше уж поморочиться с именами, а-ля вот так:
Код:
for (var i=0, inps=document.getElementsByTagName('input'), inp; inp=inps[i]; i++) {
   if (inp.name.match(/v\[\d+\]/)) inp.checked = true;
}
не прокатит, помимо чекбоксов есть еще и текстовые поля на однйо форме. а то типу инпута можно както отобрать?
 

rubalex

Новичок
не затрудник привести код. мне так разбираться легче будет. а то в яваскрипте совсем худо.
и заодно подскажите как поглядеть в яваскрипте объект=массив по типу print_r($array) a PHP
 

akxxiv

Новичок
PHP:
function cbox(v) {
var inputs=document.getElementsByTagName('input');
var p =new Array();
for (var i=0; i<inputs.length; i++) if(inputs[i].type == "checkbox") p[] = inputs[i];
for (var i=0; i<p.length; i++) p[i].checked=v;
return false;
}
 

rubalex

Новичок
спасибо, очень доходчивый код. разберусь.

а как массив целиком поглядеть в яваскрипте?
 

WP

^_^
Код:
function Dump(d,l) {
    if (l == null) l = 1;
    var s = '';
    if (typeof(d) == "object") {
        s += typeof(d) + " {\n";
        for (var k in d) {
            for (var i=0; i<l; i++) s += "  ";
            s += k+": " + Dump(d[k],l+1);
        }
        for (var i=0; i<l-1; i++) s += "  ";
        s += "}\n"
    } else {
        s += "" + d + "\n";
    }
    return s;
}
 

rubalex

Новичок
что то в этом коде на хватает ругается на кавычки, если их экранировать то ругается все равно
unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' on line 61

а на 61 строке </script>";

и вот тут s += "}\n" разве не должно стоятьв конце ";"??
 

rubalex

Новичок
theObj=document.getElementsByName("option_name");
print_r(theObj);

(использовал вот это A print_r equivalent for Javascript )

alert (theObj); выводит [object]
alert (theObj.constructor); выводит undefined

что это за constructor и почему он undefined - из за этого print_r и не пашет видимо.

-~{}~ 28.11.06 15:59:

разобрался на этом примере

http://www.phpbuilder.com/board/history/topic.php/10294264-1.html
 
Сверху