molily: Checkboxen prüfen

Beitrag lesen

var chkBoxen = document.tippFormular.getElementsByTagname("input")
do {
  chkBoxen.shift().onchange = function () { if (this.checked) {getippt++} else {getippt--} }

} while(chkBoxen.length)

Deine Bemühungen, neue, kreative und ausgefallene Möglichkeiten zu finden, Listen in JavaScript zu durchlaufen, in allen Ehren - aber der Rückgabewert von getElementsByTagName ist kein echter Array, sondern ein NodeList-Objekt, und hat keine shift-Methode.

Diese Liste ist »live«, d.h. sie gibt bei jedem Zugriff darauf immer den aktuellen Status des DOMs wieder. Sie ist also bewusst kein Array, denn eine programmseitige Veränderbarkeit würde bei einer Liste, die sich selbst ändert, zu Verwirrung führen. Eine Konvertierung in einen statischen Array nur zum Durchlaufen macht genausowenig Sinn.

Außerdem sei auf die schöne, seit JavaScript 1.0 existente Liste http://de.selfhtml.org/javascript/objekte/elements.htm@title=elements hingewiesen, mit der man alle Felder eines Formulars durchlaufen kann. Der Einfachheit halber würde ich zu einer stinknormalen for-Schleife raten. Die ist zwar nicht immer am elegantesten, aber damit macht man zumindest nichts falsch.

Übrigens würde ich die Handlerfunktion nicht gerade innerhalb der Schleife notieren - damit wird sie immer wieder erzeugt anstatt nur einmal.

Mathias