2011-01-06 3 views
1

i eine Checkbox Array-Namen so haben „stimmen []“ und ich möchte eine Funktion aufzurufen, um sie alle zu kreuzen, atm ist meine Funktion wie dieseeine Javascript-Funktion mit einer Checkbox Array

function checkAll(field) 
{ 
    for (i = 0; i < field.length; i++) 
     field[i].checked = true ; 
} 

und Ich nenne es so

checkAll(document.form.vote) 

aber es funktioniert nicht ... Wutdo?

Danke, Ben

P. S Ich habe versucht

checkAll(document.form.vote[]) 

zu tun, und es funktioniert nicht.

Antwort

3

Versuchen:

checkAll(document.form['vote[]']) 

Erläuterung:[] Teil des Namens ist, aber wenn Sie es wie form.vote[] schreiben, wäre es wie JavaScript (wahrscheinlich ungültig) interpretiert werden. Glücklicherweise gibt es in JavaScript zwei Möglichkeiten, auf Objekteigenschaften zuzugreifen: Punktnotation, foo.bar, und Array-Notation, foo['bar']. Letzteres ist praktisch, wenn die Eigenschaft keine gültige JavaScript-Kennung ist.

Weiterer Vorschlag: Da wir nicht wissen, wie Ihr HTML-Code wie document.form aussieht, könnte es auch nicht funktionieren. Ich schlage vor, das Formular, um eine ID zu geben und rufen:

checkAll(document.getElementById('yourFormID')['vote[]']) 

Update:

Werke für mich: DEMO

+0

Doesnt Arbeit: S noch andere Ideen? –

+0

@Ben Mills: Haben Sie es mit der ID versucht? –

+0

versuchte beide und keiner arbeitete: S meine HTML ist einfach krank kopieren Sie sowohl die Schaltfläche und das Javascript –

0

Versuchen Sie stattdessen mit document.getElementsByName tun:

checkAll(document.getElementsByName('vote[]')); 

Wenn das nicht funktioniert, gehen Sie mit h dies, Schleifen durch alle input Elemente.

var boxes = document.getElementsByTagName('input'); 
for (var i = 0; i < boxes.length; i++) { 
    if (boxes[i].name == 'vote[]') { 
     boxes[i].checked = true; 
    } 
} 
+0

funktioniert nicht: S irgendwelche anderen Ideen? –

+0

@Ben Mills Siehe aktualisierte Antwort. – lonesomeday

+0

das funktioniert Vielen Dank <3 –

2

Obwohl das ursprüngliche Plakat konnte diese Arbeit bekommen, eine andere Art und Weise (die getElementsByTagName Anruf vermieden wird) wäre:

checkAll(document.formname.elements['vote[]']) 

Hoffnung, dass jemand in der Zukunft hilft. :)

2

mit, indem sie mit Checkbox Filterung tun dies Versuchen nur d.h type='checkbox'

var boxes = document.getElementsByTagName('input'); 
    if(boxes.type='Checkbox'){ 
     for (var i = 0; i < boxes.length; i++) { 
      if (boxes[i].name == 'vote[]') { 
       boxes[i].checked = true; 
      } 
     } 
    }