Michael: Variable als Javascript-Objekt

Hallo zusammen!

Ich weiß nicht, ob ich mein Thema korrekt formuliert habe.
Jedenfalls möche ich eine Funktion zur Überprüfung von
mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
mit zu übergeben, was ich mit "this.name" mache. Diese Variable
muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
"document.form." + variable + ".value"
Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?

Danke...

Michael

  1. Hallo Michael,

    Jedenfalls möche ich eine Funktion zur Überprüfung von
    mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
    mit zu übergeben, was ich mit "this.name" mache. Diese Variable
    muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
    "document.form." + variable + ".value"
    Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?

    Ja, mit document.formname.elements[variable].value

    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)
  2. Hi,
    du suchst "eval()".

    Diese Variable
    muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
    "document.form." + variable + ".value"
    Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?

    eval("document.form."+variable+".value='watauchimmer'");

    Der Yeti

    --
    Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
    Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
    Und bin so klug als wie zuvor!
    sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
    http://community.de.selfhtml.org/fanprojekte/selfcode.htm
    1. du suchst "eval()".

      auf gar keinen Fall. eval ist evil!

      eval("document.form."+variable+".value='watauchimmer'");

      document.form[variable].value = 'watauchimmer';

      Struppi.

      1. Hi,

        du suchst "eval()".

        auf gar keinen Fall. eval ist evil!

        Ach ja? Inwiefern?

        Der Yeti

        --
        Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
        Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
        Und bin so klug als wie zuvor!
        sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
        http://community.de.selfhtml.org/fanprojekte/selfcode.htm
        1. auf gar keinen Fall. eval ist evil!

          Ach ja? Inwiefern?

          Du findest vielfältige Antowrten dazu im archiv.

          sag mir einen Grund, der für eval spricht?

          Struppi.

          1. Hi,

            Du findest vielfältige Antowrten dazu im archiv.

            Viel zu vielfältig für einen kurzen Überblick. Keiner der Suchtreffer hat wirklich das Thema "eval - für und wider"...
            Schade, ich dachte du hättest vielleicht eine eigene Antwort parat (ist es etwa die, ein böser Benutzer könnte die übergebene Variable ändern und so "malware" erzeugen?)

            sag mir einen Grund, der für eval spricht?

            for (var i = 1; i <= ende; i++)
               eval("document.formular.checkbox" + i + ".checked = " + set);

            oder

            eval("document.formular."+var1+var2".focus();")

            Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.

            Der Yeti

            --
            Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
            Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
            Und bin so klug als wie zuvor!
            sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
            http://community.de.selfhtml.org/fanprojekte/selfcode.htm
            1. Du findest vielfältige Antowrten dazu im archiv.

              Viel zu vielfältig für einen kurzen Überblick. Keiner der Suchtreffer hat wirklich das Thema "eval - für und wider"...
              Schade, ich dachte du hättest vielleicht eine eigene Antwort parat (ist es etwa die, ein böser Benutzer könnte die übergebene Variable ändern und so "malware" erzeugen?)

              Das ist blödsinn, aber ich (und andere) habe mich hier schon x-mal zu dem Thema geäußert und es ist halt müßig etwas immer wieder zu wiederholen obwohl  es ja hier schon zu finden wäre.

              Also:
              eval ist saulahm
              eval macht es shcwer fehler zu finden
              eval ist fast immer überflüssig
              eval läßt sich schlechter lesen
              eval führt in manchen Browsern häufiger zu Abstürzen

              sag mir einen Grund, der für eval spricht?

              for (var i = 1; i <= ende; i++)
                 eval("document.formular.checkbox" + i + ".checked = " + set);

              document.formular['checkbox' + i].checked = set;

              oder

              eval("document.formular."+var1+var2".focus();")

              document.formular[var1 + var2].focus();

              Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.

              Natürlich funktioniert das.

              Struppi.

              1. Hi,

                Das ist blödsinn, aber ich (und andere) habe mich hier schon x-mal zu dem Thema geäußert und es ist halt müßig etwas immer wieder zu wiederholen obwohl  es ja hier schon zu finden wäre.

                Komisch, dass du mir bisher noch keinen Anhaltspunkt nennen konntest, wo ich x Beiträge zu dem Thema finden kann...

                Also:
                eval ist saulahm
                eval macht es shcwer fehler zu finden
                eval ist fast immer überflüssig
                eval läßt sich schlechter lesen
                eval führt in manchen Browsern häufiger zu Abstürzen

                Sehe ich ein.
                Aber:
                1. zieht nicht bei einer Anweisung pro Seite
                2. richtig, der berühmte Fehler in Zeile 1 wo kein JavaScript ist ... solange man sich aber auf einfache Anweisungen beschränkt gar keine Problem
                3. ACK, aber kein Argument für "eval = evil"
                4. für mich nicht, ich bastel mir einen String zusammen, den JavaScript dann ausführen darf
                5. Das habe ich bisher noch nicht beobachtet, wäre aber natürlich ein Killerargument.

                Dagegen steht die (für mich) intuitive Benutzung.

                Natürlich funktioniert das.

                Sag das nicht mir sondern dem Browser. Aber bevor ich wertvolle Stunden vergeude, halte ich mich lieber an eval, das funktioniert zuverlässig.

                Der Yeti

                --
                Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
                Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
                Und bin so klug als wie zuvor!
                sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
                http://community.de.selfhtml.org/fanprojekte/selfcode.htm
                  1. für mich nicht, ich bastel mir einen String zusammen, den JavaScript dann ausführen darf

                  Du machst, wen du die Objekte direkt ansprichst doch 100% das gleiche, nur dass du unbedingt einen String erzeugen willst der vom JS nochmal geparst werden musss, d.h. er ist immer schlechter lesbar und insofern nie und nimmer...

                  Dagegen steht die (für mich) intuitive Benutzung.

                  intuitiv.

                  Mit eval musst du erst einen JS Befehl zusammen bauen und mit der normalen nur den Teil der das Objekt anspricht.

                  Natürlich funktioniert das.

                  Sag das nicht mir sondern dem Browser. Aber bevor ich wertvolle Stunden vergeude, halte ich mich lieber an eval, das funktioniert zuverlässig.

                  Das funktioniert 100% zuverlässig sogar in meinem Netscape 3 den ich ab und an benutze.

                  Während, wie gesagt, eval eher fehleranfällig ist. Und warum das intuitiv sein soll ist mir ein Rätsel.

                  Struppi.

                1. Komisch, dass du mir bisher noch keinen Anhaltspunkt nennen konntest, wo ich x Beiträge zu dem Thema finden kann...

                  Im Archiv!
                  Bei mir liefert die Suche im Archiv (2003/2004)
                  http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck="eval+ist+evil"&lang=on&feld=alle&index_5=on&index_6=on&hits=100
                  37 Treffer, in vielen zähle ich nur kurz auf (wie gesagt man wiederholt sich ungern ständig) warum eval nicht sinnvoll ist, aber es gab durchaus schon längere Threads zum Thema.
                  z.b. http://forum.de.selfhtml.org/archiv/2004/7/85372/#m502664

                  einfach mal ein bisschen suchen, beantwortet in der Regel meistens schenller Fragen.

                  Struppi.

            2. Hallo,

              sag mir einen Grund, der für eval spricht?
              for (var i = 1; i <= ende; i++)
                 eval("document.formular.checkbox" + i + ".checked = " + set);

              document.forms["formular"].elements["checkbox"+i].checked = set;

              oder
              eval("document.formular."+var1+var2".focus();")

              document.forms["formular"].elements[var1+var2].focus();

              Funktioniert bei mir nicht über document.formular[feld]... aber wenn du mich erleuchtest, wäre ich dir sehr dankbar.

              document.formular.elements[feld]
              document.forms["formularname"].elements["elementname"]

              oder DOM-konform:
              document.forms.namedItem("formulaname").elements.namedItem("elementname")

              viele Grüße

              Axel

        2. gruss Yeti,

          du suchst "eval()".

          auf gar keinen Fall. eval ist evil!

          Ach ja? Inwiefern?

          lektuere:

          1 pro und realitaet beruecksichtigendes contra:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=3D886921.6050309%40t-online.de&rnum=1

          fundiertes contra:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=avi78v%24g5umc%241%40ID-3767.news.dfncis.de&rnum=3

          polemisches contra und 2 pros:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=4051C4D8.6000609%40PointedEars.de&rnum=8

          1 gewichtiges pro:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=atp88r%241aq1l%241%40ID-3767.news.dfncis.de&rnum=13

          2 pros und 4 contras fuer news-reader:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&selm=bp5ng0%241ikjgr%241%40ID-3767.news.uni-berlin.de&rnum=5

          der link zu den genannten treffern
               http://groups.google.de/groups?q=eval+evil&num=20&hl=de&lr=&ie=UTF-8&newwindow=1&group=de.comp.lang.javascript&start=60&sa=N

          diese argumentation[lang="en"] bringt es sehr gut auf den punkt:
               http://groups.google.de/groups?q=eval+evil&hl=de&lr=&ie=UTF-8&newwindow=1&group=comp.lang.javascript&selm=oSi_c.27409%243l3.21801%40attbi_s03&rnum=2

          _weil_es_so_in_den_FAQs[lang="en"]_steht_basta_:
               http://jibbering.com/faq/#FAQ4_40  ;-)

          so long - peterS. - pseliger@gmx.net

          --
          br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
          1. Aaah, das ist doch mal brauchbar.
            Danke!
            Der Yeti

            --
            Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
            Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
            Und bin so klug als wie zuvor!
            sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
            http://community.de.selfhtml.org/fanprojekte/selfcode.htm
  3. Ich weiß nicht, ob ich mein Thema korrekt formuliert habe.
    Jedenfalls möche ich eine Funktion zur Überprüfung von
    mehreren Textfeldern nutzen. Dazu ist es aber notwendig den Elementnamen
    mit zu übergeben, was ich mit "this.name" mache. Diese Variable
    muss jetzt in einen "Pfad" eingebaut werden. Etwa in der Art
    "document.form." + variable + ".value"
    Funktioniert so etwas? Und wenn ja, wie sieht der Code dazu aus?

    Wenn du der Funktion mit this.name den Namen übergeben kannst, dann brauchst du das nicht. Übergib einfach nur this. Die Referenz des Formulares hast du dann ebenfalls (this.form)

    Struppi.

  4. Hab mir vorhin für eine interne Anwebndung diesen dirty Hack geschrieben:

    Container ist ein mehrdimensionaler Array (Name, Pos etc.) in dem ich alle Div's die ich auslesen will und in ein hidden field packe.

    Der Name des Divs ist dann an erster Stelle und heist "Cont01".
    Mein Filed heist dann "Cont01Content".

    Frage also alle formelemente nach ihren Namen und lass mir dann Ihre Pos im Form Array ausgeben. Das mit der -1 ist nur ne Notlösung. Ist halt Dirty.

    function saveData(){
    tmpCount = Container.length;
     for(var i = 0; i < tmpCount; i++){
      tmpNumber = false;
      tmpNumber = checkElementNumber([Container[i][0]]+"Content");
      if(tmpNumber){
       document.myEdit[tmpNumber-1].value =  document.getElementById(Container[i][0]).innerHTML;
      }
     }
     document.myEdit.submit();
    }

    // Ermittelt nach den Namen die Nummer des Form-Elementes;
    function checkElementNumber(ElementName){
     tmpCount1 = document.myEdit.elements.length;
     for(var m = 0; m < tmpCount1; m++){
      if(document.myEdit.elements[m].name == ElementName){
       return m+1;
      }
     }
    }