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:
- 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.
- 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.
- 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