kostenloser Webspace werbefrei: lima-city


JS Funktionszuweisung mit variablen Variablen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Hi
    ich möchte in JS eine Funktion schreiben, die jedem input Feld eine onFocus Funktion anlegt. (das ganze läuft in einer Schleife)
    in dieser onFocus Funktion soll eine Variable stehen, die den Typ 'value' dieses Feldes enthält.

    Ich müsste also quasi Javascriptcode mit Javascript generieren. geht das?

    /* field = input Object Array*/
    [..]
    var x = field[i].getAtribute('value');
    field[i].onfocus = function() {
      var y = x; /* y soll den zuvor ausgelesenen Wert zugewiesen bekommen und bei onfocus mit diesem deklariert werden */
    [..]
    }
    [..]


    Ich hoffe Ihr könnt mir weiterhelfen,
    LF
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******************r

    Hallo!

    Besser wärs hier, die Funktion seperat zu definieren und in der Schleife dann jeweils den Elementen zu zu ordnen:
    function onFocus()
    {
    ...
    }
    
    
    for (...)
    {
    ...
    field[i].onfocus = onFocus;
    ...
    }


    Noch einfach wärs mit jQuery, da würde das hier schon reichen:
    $("input").on("focus", function () { ... });


    Lg
  4. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Das Problem ist allerdings, das die 'onfocus' Funktion für jedes Inputfeld anderst aussieht, und ich
    1) nicht weiss welchen Wert x hat
    2) nicht weiss wie viele Inputfelder es gibt denen eine Funktion zugewiesen wird

    Die Funktion muss ich daher dynamisch erstellen und dann zuweisen.


    Zur JQuery Variante:
    Wo genau ist jetzt der Vorteil?
    Wie ich allen inputfeldern eine Funktionzuweise kann ich ja problemlos, das Problem liegt darin, die Funktion die zugewiesen wird mit 'übergeordneten Variablen' zu 'bauen'.

    LG
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du könntest doch wenn es echt sein muss mit eval deine Funktion dynamisch erstellen... dann kannst du deine übergeordneten Variablen einbauen wie du willst.
  6. Hi,

    wie wär's mit:
    field[i].onfocus = function() {
      var y = this.value;
    }


    Gruß
  7. g****e

    Ich verstehe das Problem leider nicht. Willst du einfach nur allen input Elementen eine onFocus funktion hinzufügen? Das ginge so:
    eList = document.getElementsByTagName("input");
    for ( e in eList ) {
        e.onfocus = function(event) {
            y = this.value;
        }
    }

    Das sollte an sich gehen, wenn es nicht geht dann halt so:
    eList = document.getElementsByTagName("input");
    for ( i=0 ; i < eList.length ; i++ ) {
        eList[ i ].onfocus = function(event) {
            y = this.value;
        }
    }

    Sollte an sich ohne weiteres gehen, und wäre in meinen augen das einfachste. Sollte in allen Browsern funktionieren, bis zurück zum IE6, grundsätzlich sollte es auch im IE5.5 funktionieren, dafür geb ich aber keine garantie.

    Liebe Grüße

    Beitrag zuletzt geändert: 14.7.2012 20:41:18 von ggamee
  8. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Also nochmal zur Problemklärung:
    Ich weiss wie ich jedem besagten Element eine onFocus Funktion zuweise.
    Ich möchte aber erst einen wert auslesen, und diesen Wert dann in die Funktion schreiben und beim nächsten Element wieder erst auslesen dann schreiben.

    Das Problem ist aber, dass ich in meiner for schleife, die über alle Elemente iteriert einen Wert auslese und diesen in eine Variable (x)
    speicher. in der OnFocus funktion möchte ich nun diesen ausgelesenen Wert (x) verwenden können.

    LG
  9. Hi,

    ich denke schon, dass ich das Problem verstanden habe. Allerdings ist der Weg den du einschlagen willst eine Sackgasse.
    Was passt hieran nicht?
    Das ist zwar nicht so wie du es machen wolltest, führt aber zum gleichen Ergebnis: Der Wert value ist in der Funktion onfocus verfügbar und zwar passend zu jedem Element field(i).
    Nach dem was du bisher geschrieben hast, ist es nicht erforderlich den Wert fest in die Funktion zu schreiben.Und nach dem was ich weiß, ist es nicht möglich eine Funktion dynamisch zu erstellen. Es ist immer ein Umweg über z.B. ein Attribut erforderlich.

    Edith: Muß mich korrigieren, es würde z.B. so funktionieren:
    document.getElementById(i).onfocus = new Function("fx", "var y ="+x);
    Habe ich mit einer bekannten Suchmaschine für dich hier gefunden.

    Gruß

    Beitrag zuletzt geändert: 17.7.2012 21:23:46 von bandi999
  10. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Super danke! Das läuft.
    Ich frage mich jedoch warum eval das nicht leistet, weil dainter doch der gleiche Gedanke (code dynamisch erzeugen) steht.

    Liebe Grüße
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    programtools schrieb:
    Super danke! Das läuft.
    Ich frage mich jedoch warum eval das nicht leistet, weil dainter doch der gleiche Gedanke (code dynamisch erzeugen) steht.
    Weil eval den Code sofort ausführt... dort müsstest du wieder onirgendwas = function() { dynamischer Code; }; schreiben was aufs gleich hinausläuft.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!