Twilo: im aktuellen Formular ein Wert auslesen

Hallo,

ich möchte, wenn ich bei ein Link per onclick den Wert eines Elements auslesen.

<a href="#" onclick="alert(this.form.test.value);">test</a>

wenn ich es jedoch wie folgt löse, erhalte ich den Wert
<input type="button" value="test" onclick="alert(this.form.test.value)">

das Dokument hat mehrere Formulare - ich möchte in jeden Formular auf das aktuelle zugreifen.

mfg
Twilo

  1. das Dokument hat mehrere Formulare - ich möchte in jeden Formular auf das aktuelle zugreifen.

    Du musst das aktuelle Formular eben in einer Variablen speichern. Wenn ein neues Formular 'betreten' wird musst du die Variable entsprechend ändern. Ein Tipp onfocus, könnte helfen.

    Michael Wille

  2. Hallo,

    das Dokument hat mehrere Formulare - ich möchte in jeden Formular auf das aktuelle zugreifen.

    Das ist nicht so einfach. Ein Link ist nicht Teil eines Formulars und deshalb hat das a-Elementobjekt auch keine Eigenschaft form, die auf das zugehörige Formular verweist.

    »Das Formular, indem sich der Link befindet« musst du erst über das DOM suchen, indem du vom a-Elementobjekt ausgehend im DOM-Baum nach oben aufsteigst, bis du ein form-Element gefunden hast.

    Das geht mit der Eigenschaft parentNode und einer Schleife, die läuft, bis es ein Element mit dem richtigen tagName gefunden hat.

    Vom Prinzip her:

    function sucheFormular (aElement) {  
      var elem = aElement;  
      do {  
        elem = elem.parentNode;  
      } while (elem.tagName != "form");  
      alert("Formularelement gefunden!\n" + elem);  
      alert(elem.elements.test.value);  
    }
    

    <a onclick="sucheFormular(this)">...</a>

    Mathias

    1. Hallo,

      function sucheFormular (aElement) {

      var elem = aElement;
        do {
          elem = elem.parentNode;
        } while (elem.tagName != "form");
        alert("Formularelement gefunden!\n" + elem);
        alert(elem.elements.test.value);
      }

      
      >   
      > <a onclick="sucheFormular(this)">...</a>  
        
      ich erhalte die Meldung  
      
      > Fehler: elem has no properties  
      > Quelldatei: http://localhost:7890/:members\_old.html#  
      > Zeile: 29  
        
      Zeile 29 ist folgende  
      
      > } while (elem.tagName != "form");  
        
        
      mfg  
      Twilo  
      
      -- 
      [Farbtabelle](http://www.farb-tabelle.de)
      
      1. Hallo,

        Der ungetestete Beispielcode sollte dir das Prinzip einer möglichen Umsetzung erklären. Das kannst du nachvollziehen und mit dem Code als Arbeitsgrundlage weiterarbeiten. Es war kein Fertigcode, weil das hier das SELFHTML-Forum ist und Mitdenken angesagt ist.

        tagName liefert die Tag-Namen in Großbuchstaben, daher trifft != "form" nie zu, es müsste != "FORM" heißen. Das wäre schnell aufgefallen, wenn du wie beschrieben vorgegangen wärest... Aber der Herr möchte die Sau mit Apfel im Maul auf dem Silbertablett. ;)

        Mathias

        1. Hallo,

          Der ungetestete Beispielcode sollte dir das Prinzip einer möglichen Umsetzung erklären. Das kannst du nachvollziehen und mit dem Code als Arbeitsgrundlage weiterarbeiten. Es war kein Fertigcode, weil das hier das SELFHTML-Forum ist und Mitdenken angesagt ist.

          tagName liefert die Tag-Namen in Großbuchstaben, daher trifft != "form" nie zu, es müsste != "FORM" heißen. Das wäre schnell aufgefallen, wenn du wie beschrieben vorgegangen wärest... Aber der Herr möchte die Sau mit Apfel im Maul auf dem Silbertablett. ;)

          ich hatte in SelfHTML (tagName) nachgeschaut - da steht leider nicht, dass der Name in grossbuchstaben zurückgegeben wird.
          Das Beispiel hatte ich dort nicht ausgeführt - dann wäre mir das sicherlich aufgefallen :-\

          mfg
          Twilo

      2. Hi,

        ich erhalte die Meldung

        Fehler: elem has no properties
        Quelldatei: http://localhost:7890/:members_old.html#
        Zeile: 29

        Und du hast, wie von Mathias gezeigt, das A-Element beim Aufruf der Funktion als Parameter uebergeben?

        Btw: Eine zusaetzliche lokale Variable braucht's an der Stelle m.E. nicht, man kann auch gleich vom jeweils aktuellen aElement auf dessen parentNode gehen - aElement enthaelt schliesslich lediglich eine Referenz, die beliebig auf was anderes gesetzt werden kann.

        MfG ChrisB

        1. Hallo,

          Und du hast, wie von Mathias gezeigt, das A-Element beim Aufruf der Funktion als Parameter uebergeben?

          ja, das Problem war, dass der tagName in Grossbuchstaben zurückgegeben wird.

          Btw: Eine zusaetzliche lokale Variable braucht's an der Stelle m.E. nicht, man kann auch gleich vom jeweils aktuellen aElement auf dessen parentNode gehen - aElement enthaelt schliesslich lediglich eine Referenz, die beliebig auf was anderes gesetzt werden kann.

          das war das erste, was ich geändert hatte :-)

          mfg
          Twilo