Dirk Wendt: Schleife für elements.length

Hallo,

ich habe folgendes Problem.
Diese Schleife funktioniert, wenn ich mindestens 2 Elemente habe.
Bei einem Element ist elements.length = undefined

for (var i = 0; i < welche_form.elements["auswahl[]"].length; i++)

in dieser Schleife frage ich ob das Element checked ist, aber wenn nur eines da ist übergeht er diese Schleife.

Was kann ich tun?

Besten Dank
Dirk

  1. Hello,

    Bei einem Element ist elements.length = undefined

    for (var i = 0; i < welche_form.elements["auswahl[]"].length; i++)

    Wann und wie wird denn die Code-Zeile aktiv? Steckt die in einer Funktion?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Wann und wie wird denn die Code-Zeile aktiv? Steckt die in einer Funktion?

      Diese Zeile steht in einer Funktion und diese Funktion wird mittels dem onsubmit event der Form ausgelöst.

      onSubmit="return chkPacketeingabe(this)

      function chkPacketeingabe(welche_form) {
        var auswlength = welche_form.elements["auswahl[]"].length;

      alert(welche_form.elements["auswahl[]"].length);
        // HIER BEI EINEM ELEMENT = undefined
        for (var i = 0; i < auswlength; i++) {
          if(ausw[i].checked == true) {
            ....
          }
        }
      }

  2. , wenn ich mindestens 2 Elemente habe.

    Bei einem Element ist elements.length = undefined

    for (var i = 0; i < welche_form.elements["auswahl[]"].length; i++)

    in dieser Schleife frage ich ob das Element checked ist, aber wenn nur eines da ist übergeht er diese Schleife.

    Was kann ich tun?

    Naja, das Problem ist, für welchen Typ verwendest du das?

    Wenn das keine Radiogroup ist, sollten sie nicht den gleichen Namen haben, aber auch nicht nur eins vorhanden sein.

    Struppi.

    1. für Checkboxen und den gleichen Namen braue ich für das Array in PHP.

      mit mehr als eines funktioniert es ja wunderbar und wenn nur eine Checkbox da ist müsste sie doch auch ein Element sein und dann ist ja auch der Name nur einmal vorhanden.

      Gruß Dirk

  3. Hallo Dirk Wendt,

    Diese Schleife funktioniert, wenn ich mindestens 2 Elemente habe.
    Bei einem Element ist elements.length = undefined

    In diesem Fall hast Du kein Array.
    Prüfe also, ob 0, 1 oder mehrere Elemente dieses Namens vorhanden sind:

    if (welche_form.elements["auswahl[]"]) {  // Mindestens ein Element vorhanden
      if (welche_form.elements["auswahl[]"].length) {  // Mehr als eins
        // hier die Schleife
      }
      else {  // genau eins
        // Aktion für das eine Element
      }
    }

    So ungefähr sollte es gehen.

    Grüße
    Andreas

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
    (Rich Cook)