Schwabbo: Array-Zugriff und Änderung über Variable

Hallo Leute,

möchte in einem Formularfeld eine Eingabeprüfung durchführen.
Nach erfolgter Eingabe wird die Funktion PruefeText aufgerufen und ich lese aus dem zum Formularfeld zugehörigen Array (UserNNalt) die Werte in lokale Variablen.
Ist die Eingabe korrekt, möchte ich den Wert UserNNalt[4] auf "1" setzen.
Weiß aber nicht, wie ich diesen Array-Wert über eine Variable beschreiben kann.

Kann mir jemand helfen?

Gruß

Schwabbo

...
1)

<input type="text" name="UserNNalt" size="30" onChange="PruefeText(this)"></font></td>
...

UserNNalt = new Array("Name", 3, 30, "XYZ", 0)
...

function PruefeText(vFeld)
{
var vFeldName = eval(vFeld.name+'[0]')
var vMinZeichen = eval(vFeld.name+'[1]')
var vMaxZeichen = eval(vFeld.name+'[2]')
var vPflichtText = eval(vFeld.name+'[3]')
var vFeldStatus = eval(vFeld.name+'[4]')
...

vFeld.name[4]=1 ??? geht nicht
eval(vFeld.name+'[4]'=1) ??? geht auch nicht

...

}

  1. Hallo Leute,

    möchte in einem Formularfeld eine Eingabeprüfung durchführen.
    Nach erfolgter Eingabe wird die Funktion PruefeText aufgerufen und ich lese aus dem zum Formularfeld zugehörigen Array (UserNNalt) die Werte in lokale Variablen.
    Ist die Eingabe korrekt, möchte ich den Wert UserNNalt[4] auf "1" setzen.
    Weiß aber nicht, wie ich diesen Array-Wert über eine Variable beschreiben kann.

    Kann mir jemand helfen?

    Gruß

    Schwabbo

    ...
    1)

    <input type="text" name="UserNNalt" size="30" onChange="PruefeText(this)"></font></td>
    ...

    UserNNalt = new Array("Name", 3, 30, "XYZ", 0)
    ...

    function PruefeText(vFeld)
    {
    var vFeldName = eval(vFeld.name+'[0]')
    var vMinZeichen = eval(vFeld.name+'[1]')
    var vMaxZeichen = eval(vFeld.name+'[2]')
    var vPflichtText = eval(vFeld.name+'[3]')
    var vFeldStatus = eval(vFeld.name+'[4]')

    Warum eval? Woher hast du das?
    eval ist langsam, fehleranfällig, schwerer zu debuggen und bringt den Netscape 4.x gern zum Absturz. Darüber hinaus in 99.99999% der Fälle in denen es eingesetzt wird nicht nötig.

    das Gleiche macht:
    var vFeldName = window[vFeld.name][0];
    var vMinZeichen = window[vFeld.name][1];
    var vMaxZeichen = window[vFeld.name][2];
    var vPflichtText = window[vFeld.name][3];
    var vFeldStatus = window[vFeld.name][4];

    ...

    vFeld.name[4]=1 ??? geht nicht
    eval(vFeld.name+'[4]'=1) ??? geht auch nicht

    aber: window[vFeld.name][4] = 1;

    Schön ist das aber nicht.

    Struppi.

    1. Danke für den Tip!
      Warum ist das nicht schön?
      Hast Du eine bessere Lösung?

      Schwabbo