Axel Richter: Alle Checkboxen einer Spalte umschalten

Beitrag lesen

Hallo,

Im Moment löse ich es also so, daß ich toggleAllCheckboxes den Namen der Checkboxen übergebe (der immer gleich sein muß) und anschließend alle Objekte dieses Namens daraufhin überprüfe, ob sie:

  1. Ein INPUT Element

Kann man besser lösen, indem man vom FORM ausgeht und dessen elements Collection durchläuft. Das FORM eines Elements, in Deinem Fall der Checkbox, erhält man mit [Element].form.

  1. vom Typ checkbox sind

Das muss man nur prüfen, wenn es andere Formularelemente mit dem selben Namen geben kann. Das würde aber auch die serverseitige Auswertung fast unmöglich machen, weil die name/value-Paare übertragen werden.

  1. und in derselben Tabelle liegen, wie die toggle-Checkbox

Das wäre nur relevant, wenn es mehrere Tabellen im selben Formular geben kann. Ist das so?

Kennt hier jemand eine elegantere Methode?

Wenn die Antworten auf meine Fragen zu 2. und 3. nein lauten, dann:

  
      function toggleAllCheckBoxes(cb, form, name) {  
        var cbs = form.elements[name];  
        for ( var i = cbs.length ; i-- ; )  
         with ( cbs[i] ) {  
          if ( type != 'checkbox' ) continue;  
          checked = cb.checked;  
         }  
      }  

  
...  
              <input type="checkbox" onclick="toggleAllCheckBoxes(this, this.form, 'hostid')" name="toggleAllCheckbox"></input>  
...  

viele Grüße

Axel