Lars Schefft: Javascript: for schleife funzt nicht!

Hi!
Wie kann ich bitte den Wert jedes Arrayelementes Ausgeben?
alert(erg[count].value) funzt nicht...(Gibt "undefined" zurück :-(

Die Überprüfung funzt, nur wenn ich es über das Array versuche aufzulösen gehts nicht. Ich verzweifel so langsam!
Büdde hülft mür :-)

Thx in advance

Lars

function chkFormular()
{
var erg = new Array();
erg[0] = document.forms[0].E_1;
erg[1] = document.forms[0].E_2;
erg[2] = document.forms[0].E_3;
erg[3] = document.forms[0].E_4;
erg[4] = document.forms[0].E_5;
erg[5] = document.forms[0].E_6;
erg[6] = document.forms[0].E_7;
erg[7] = document.forms[0].E_8;
erg[8] = document.forms[0].E_9;

var chkZ = 1;

for(count = 0; count < erg.length; ++count)

for(i=0;i < erg[count].value.length;++i)
      if(erg[count].value.charAt(i) < "0" || erg[count].value.charAt(i) > "9")
        chkZ = -1;
    if(chkZ == -1)
    {
      alert("Ungültige Eingabe! Bitte nur Zahlen eingeben! (Auch kein :)");
      erg[count].focus();
      return false;
     }
 if(erg[count].value.length != 2)
     {
    alert(erg[count].value + " ist keine zweistellige Eingabe! Maximal 2 Stellen möglich!")
    return false;
     }
}

  1. Wie kann ich bitte den Wert jedes Arrayelementes Ausgeben?
    alert(erg[count].value) funzt nicht...(Gibt "undefined" zurück :-(

    welche funz?

    Du kannst den wert jedes Array Elementes so ausgében

    alert( erg.join("\n"));

    aber das ist nicht das was du wirklich willst, auch wenn deine Frage so klingt.

    Die Überprüfung funzt, nur wenn ich es über das Array versuche aufzulösen gehts nicht. Ich verzweifel so langsam!

    Dein Sprachmodul scheint nicht 100% i.O zu sein, dieser Satz ergibt für mich keinen Sinn.

    Büdde hülft mür :-)

    auch der nicht ;-)

    nur mal so als Tipp:

    <form ..... onsubmit="return checkFormular(this);">

    so kannst du die referenz des Formulars direkt an die Funktion übergeben.

    function chkFormular()

    function chkFormular(f)

    {
    var erg = new Array();
    erg[0] = document.forms[0].E_1;
    erg[1] = document.forms[0].E_2;
    erg[2] = document.forms[0].E_3;
    erg[3] = document.forms[0].E_4;
    erg[4] = document.forms[0].E_5;
    erg[5] = document.forms[0].E_6;
    erg[6] = document.forms[0].E_7;
    erg[7] = document.forms[0].E_8;
    erg[8] = document.forms[0].E_9;

    1. Das passt gut in eine Schleife
    2. ist der Unterstrich wirklich erlaubt
    3. ist das aber einfacher wenn du allen den gleichen Namen gibst. z.b. 'E'

    Also um dir mal das Prinzip zu zeigen:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html><head>

    <title>Test</title>
    <script type="text/javascript">
    function test(f)
    {
        for(var i = 0; i < f['E'].length; i++)
        {
            alert(f['E'][i].value);
        }
        return false;
    }
    </script>

    </head>
    <body>

    <form onsubmit="return test(this);">
    <input type="text" name="E">
    <input type="text" name="E">
    <input type="text" name="E">
    <input type="submit">

    </form>

    </body>
    </html>

    var chkZ = 1;

    for(count = 0; count < erg.length; ++count)

    for(i=0;i < erg[count].value.length;++i)
          if(erg[count].value.charAt(i) < "0" || erg[count].value.charAt(i) > "9")

    eine Zahl läßt sich auch einfacher testen.

    gib dir mal die Values mit Number(....) aus!

    Struppi.

    1. @Struppi

      Danke! War "nur" ein Klammer-Problem: (bzw. ein Semikolon nach der For-Schleife.... Anfängerfehler halt :-)

      function chkFormular()
      {
      var erg = new Array();
      erg[0] = document.forms[0].E_1;
      erg[1] = document.forms[0].E_2;
      erg[2] = document.forms[0].E_3;
      erg[3] = document.forms[0].E_4;
      erg[4] = document.forms[0].E_5;
      erg[5] = document.forms[0].E_6;
      erg[6] = document.forms[0].E_7;
      erg[7] = document.forms[0].E_8;
      erg[8] = document.forms[0].E_9;

      var chkZ = 1;

      for(count = 0; count < erg.length; ++count)
      {
          for(i=0;i < erg[count].value.length;++i)
            if(erg[count].value.charAt(i) < "0" || erg[count].value.charAt(i) > "9")
              chkZ = -1;
          if(chkZ == -1)
          {
            alert("Ungültige Eingabe! Bitte nur Zahlen eingeben! (Auch kein :)");
            erg[count].focus();
            return false;
           }
       if(erg[count].value.length != 2)
           {
          alert(erg[count].value + " ist keine zweistellige Eingabe! Maximal 2 Stellen möglich!")
          erg[count].focus();
          return false;
           }
       }
      }

      So gehts!
      Kannst du mir erklären, wo genau der Unterschied zwischen:
      ++Var und Var++ liegt? Danke!

      1. @Struppi

        Danke! War "nur" ein Klammer-Problem: (bzw. ein Semikolon nach der For-Schleife.... Anfängerfehler halt :-)

        Trotz allem ist der Code jetzt nicht besser.

        function chkFormular()

        wie gesagt hier kannst du die Referenz zum Formular übergeben und machst die Funktion nicht davon abhängig das es nur ein Formular in deinem dokument gibt.

        for(count = 0; count < erg.length; ++count)
        {
            for(i=0;i < erg[count].value.length;++i)
              if(erg[count].value.charAt(i) < "0" || erg[count].value.charAt(i) > "9")
                chkZ = -1;
            if(chkZ == -1)

        ... ist die Überprüfung ob es eine Zahl ist imer och mit Number() eonfacher und schneller.

        Kannst du mir erklären, wo genau der Unterschied zwischen:
        ++Var und Var++ liegt? Danke!

        Das eine ist der pre- das andere der post Increment-Operator.
        d.h. im 1. Fall wird erst erhöht und dann ausgeführt im zweiten danach, insofern ist deine Variante falsch. Das das i erst erhöht wird, dann die Schleife durchgeführt und das heißt sie bricht zu früh ab.

        Struppi.

  2. hi,

    for(count = 0; count < erg.length; ++count)
        for(i=0;i < erg[count].value.length;++i)

    mache dir zunächst mal den unterschied zwischen
    ++variable;
    und
    variable++;
    klar.

    gruss,
    wahsaga

    1. hi,

      for(count = 0; count < erg.length; ++count)
          for(i=0;i < erg[count].value.length;++i)
      mache dir zunächst mal den unterschied zwischen
      ++variable;
      und
      variable++;
      klar.

      gruss,
      wahsaga

      Na toll. Hilf mir lieber weiter anstatt so eine Aussage zu machen.
      Wo liegt denn der Unterschied?

    2. Hi,

      for(count = 0; count < erg.length; ++count)
          for(i=0;i < erg[count].value.length;++i)
      mache dir zunächst mal den unterschied zwischen
      ++variable;
      und
      variable++;
      klar.

      Es gibt zwar einen Unterschied, aber der ist in for-Schleifen völlig belanglos! Da die Increment-Variable ja nicht zugewiesen wird.

      Gruß
      Christian