Frage zu eval() in Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu eval() in Funktion

    Hallo,

    ich habe nachfolgende Funktion mit der ich nicht ganz klar komme. Mein Frage vorab: mit eval wird doch ein Code ausgeführt, der als Zeichenkette definiert ist. Aber was ergibt hier eval( "form." + name + ".value")? Zur Hintergrundinfo: diese Javascript-Fuktion wird in ein php-Skript mit Forms eingebunden.


    var isFormElementInRange;

    function checkFormElementInRange (form, name, min, max ) {

    isFormElementInRange = true;
    var val = parseInt( eval( "form." + name + ".value" ));

    if(isNaN(val)) {
    isFormElementInRange = false;
    return false;
    }
    if (val < min || val > max ) {
    alert( val +" is not a valid row number!" );
    isFormElementInRange = false;
    eval( "form."+ name + ".focus()");
    eval( "form."+ name + ".select()");
    }else {
    eval( "form."+ name + ".value = val" );
    }
    return true;
    }

  • #2
    gar nicht, IMHO falsch abgetippt. Richtig müsste:

    eval(form+"."+name+".value");

    sein. Das Ganze scheint vmir iel zu kompliziert, einfacher wirds, wenn du form und element in den Parametern vergisst, und nur eine Parameter für beide Info verwendest, dann brauchst du keine eval() auszuführen, etwa so

    function xyz(elem,min,max) {
    var val = parseInt(elem.value);
    ....
    }

    und der Aufruf im element selbst, etwa: onBlur="xyz(this,2,10);"

    Kommentar


    • #3
      Re: Frage zu eval() in Funktion

      Original geschrieben von Ralf
      Aber was ergibt hier eval( "form." + name + ".value")?
      damit wird der richtige bezeichner für den zugriff auf das formularfeld name zusammengesetzt, und anschliessend per eval ausgewertet.

      zeigt nur, dass hier mal wieder jemand am werk war, der sich nicht genügend auskannte, und dann eval als notnagel einsetzt, obwohl es vollkommen überflüssig ist.

      man kann stattdessen genauso gut - nein:besser - die syntax benutzen, wie sie selfhtml bei der beschreibung des elements-objektes im ersten beispiel beschreibt:

      document.forms[form].elements[name].value
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X