Lio: Auf mehrere Felder zugreifen über eine Funktion

Hi an alle,

könnte mir jemand bitte helfen bei meinem Problem?

Also ich will mit einer Funktion mehrere Eingabefelder abfragen, ohne jedes manuel eintippen zu müssen. Also er soll z.B. Feld1 kontrollieren, dann Feld2, dann Feld3 usw.

So in etwa hab ich des versucht:

//WARNING!!
function TESTAREA() {
zahl = 1;

while ( zahl <= 35 )
 {
        feld = "document.Fomular.Feld" + zahl;
  feld.value = zahl;
  zahl = zahl + 1;
 }

}
//WARNING!!

  1. hi,

    feld = "document.Fomular.Feld" + zahl;

    Lies das: http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke wahsaga,

      nur leider versteh ich das Tutorial nicht. Ich steh auf dem Schlauch. Kannst du nicht vormachen wie das gehen soll??

      THX

      1. hi,

        nur leider versteh ich das Tutorial nicht. Ich steh auf dem Schlauch. Kannst du nicht vormachen wie das gehen soll??

        https://forum.selfhtml.org/?t=115728&m=739577

        So schwer - oder ist dein Denkvermögen heute morgen noch im Bett geblieben?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. THX All es funktioniert!

          Und wahsaga, tut mir leid für dich, nicht jeder versteht sowas direkt. Da brauchst mich auch nicht zu beleidigen! Oder bist du aufgewacht und konntest alles??

          Aber noch eine weitere Frage:
          Das Programm hier soll die Felder kontrollieren, dass Kommas in Punkte umgewandelt werden sollen! Aber es funktioniert nicht! Wieso??

          function kommainpunkt()
          {

          zahl = 1;
          while ( zahl <= 2 )
            {
            str = document.forms["Fomular"].elements["Feld"+ zahl].value;
            i=0;
            lng = str.length;

          while ( i<=lng )
             {
             if ( str.charAt(i) == "," )
              {
              str.charAt(i)=".";
              }
             i=i+1;
             }
            document.forms["Fomular"].elements["Feld"+ zahl].value = str;
            zahl = zahl + 1;
            }
          }

          FEHLER: Kann dem Ergebnis einer Funktion nicht zugewiesen werden.

          Aber dann kommt dieser Fehler raus. Komisch, denn der kommt nur wenn ein , drin steht. Wenn ich eine andere Ausgabe mache an ein Feld gehts auch! Nur er fügt den str nicht hinein! Wieso?

          THX

          1. hi,

            Und wahsaga, tut mir leid für dich, nicht jeder versteht sowas direkt. Da brauchst mich auch nicht zu beleidigen!

            Bist du wegen so einer kleinen Bemerkung direkt "beleidigt"?

            Oder bist du aufgewacht und konntest alles??

            Zumindest konnte ich, als ich heute morgen aufgewacht bin, _lesen_.
            Und auf der verlinkten Seite steht doch recht ausführlich, wie man auf Formularfelder zugreifen kann. Was hast du daran nicht verstehen können?

            FEHLER: Kann dem Ergebnis einer Funktion nicht zugewiesen werden.

            Der kommt, weil du hier

            str.charAt(i)=".";

            versuchst, einer Funktion einen Wert zuzuweisen - das geht so herum nicht.

            Entweder müsstest du mit den Stringfunktionen deinen String um das Komma herum auseinanderschneiden, und die beiden Teile mit einem "." dazwischen wieder zusammensetzen - oder du schaust dir mal String.replace() an.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. moin Lio :)

    //WARNING!!
    function TESTAREA() {
    zahl = 1;

    while ( zahl <= 35 )
    {
            feld = "document.Fomular.Feld" + zahl;
      feld.value = zahl;
      zahl = zahl + 1;
    }

    }
    //WARNING!!

    Es ist mir neu, dass eine String-Variable (feld) ein value hat ;)
    Was du brauchst ist objekunabhängige Funktion eval()

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
    1. Hallo,

      feld = "document.Fomular.Feld" + zahl;
      Was du brauchst ist objekunabhängige Funktion eval()

      Nein, denn

      document.forms["Formular"].elements["Feld"+ zahl].value

      kann durchaus auch so angesprochen werden.

      Die Funktion eval() ist _nur_ zur direkten Auswertung eingegebenen mathematischer Terme sinnvoll.

      viele Grüße

      Axel

      1. moin Axel :)

        document.forms["Formular"].elements["Feld"+ zahl].value
        kann durchaus auch so angesprochen werden.

        Echt? Wusste ich nicht... dann werd ich gleich mal meine Skripte "aufräumen" ;)

        Die Funktion eval() ist _nur_ zur direkten Auswertung eingegebenen mathematischer Terme sinnvoll.

        In der Doumentation steht aber auch (wenn ich mich recht erinner) auch, dass es dazu dienen kann, Objekte anzusprechen...

        <zitat>Wenn das übergebene Argument als Objekt oder Objekteigenschaft interpretiert werden kann, wird das Objekt bzw. die Objekteigenschaft zurückgegeben. Dies ist wichtig, wenn eine Zeichenkette (z.B. ein Formularfeldinhalt oder ein einer Funktion übergebener Parameter) als Objekt interpretiert werden soll.</zitat>

        Oder wie ist dieser Satz zu verstehen?

        liebe Grüße aus Berlin
        lina-

        --
        Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
        1. Hallo,

          Die Funktion eval() ist _nur_ zur direkten Auswertung eingegebenen mathematischer Terme sinnvoll.

          In diesem Satz ist ein "n" sinnvoll durch ein "r" zu ersetzen. Der Schreiber hatte Probleme mit die Fälle [1].

          In der Doumentation steht aber auch (wenn ich mich recht erinner) auch, dass es dazu dienen kann, Objekte anzusprechen...

          Ja, aber eval() ist nur zu verwenden, wenn es gar nicht anders geht. Um zu verstehen warum, muss man sich vor Augen führen, was eval() eigentlich macht. Es versucht _während des Programmablaufs_ einen String als Anweisung zu interpretieren. Das funktioniert sowieso nur in interpretergesteuerten Sprachen und auch dort verbraucht es erhebliche Ressourcen an Arbeitsspeicher und Zeit.

          viele Grüße

          Axel

          [1] ;-)

          1. moin Axel :)

            Die Funktion eval() ist _nur_ zur direkten Auswertung eingegebenen mathematischer Terme sinnvoll.
            In diesem Satz ist ein "n" sinnvoll durch ein "r" zu ersetzen. Der Schreiber hatte Probleme mit die Fälle [1].

            ... jaja - der dativ ist dem Genitiv sein Tod ;)

            In der Doumentation steht aber auch (wenn ich mich recht erinner) auch, dass es dazu dienen kann, Objekte anzusprechen...
            Ja, aber eval() ist nur zu verwenden, wenn es gar nicht anders geht. Um zu verstehen warum, muss man sich vor Augen führen, was eval() eigentlich macht. Es versucht _während des Programmablaufs_ einen String als Anweisung zu interpretieren. Das funktioniert sowieso nur in interpretergesteuerten Sprachen und auch dort verbraucht es erhebliche Ressourcen an Arbeitsspeicher und Zeit.

            achso... das war mir nicht so bewusst... aber das erklärt, warum meine Skripte teilweise doch recht lange brauchen und die Performance-Tests immer schlechter ausfallen ;)
            Fein... da werd ich mir also mal ein bissl Zeit nehmen und ausmisten.
            Vielen Dank für die Erklärung!

            liebe Grüße aus Berlin
            lina-

            --
            Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)