Kurt001: JavaScript Übergabevariable funktioniert nicht

Guten Tag,

meine Funktion bekommt einen Wert übergeben, aber dieser kommt nicht an.

function submitForm(testy) {
document.getElementById("tempTest").innerHTML = testy;
}

Mein Aufruf kommt aus einem A HREF:

echo " <form name='dummyForm' action='index.php' method='POST'>";
echo "    <input type='hidden' name='mySubmit' value='Tutorial'>";
echo "    <A href='javascript: submitForm('Testwert')'>".GA_GUIDE."</A>";
echo " </form>";

Wenn ich beim Aufruf den Testwert weglasse, dann springt er auch in die Funktion. Mit dem Testwert springt er noch nicht einmal hinein.
Das habe ich getestet indem ich in der Funktion nicht testy ausgeben lasse, sondern einen festen Wert und dann einmal mit Übergabewert probiere und einmal ohne.

Da ich mit der Funktion den SUBMIT Befehl ausführen möchte, allerdings jedesmal von einem anderen Button, wollte ich den Übergabewert mitgeben.
Ich kann nicht sonst nicht mehrere Formulare gleich benennen.
z.B.
document.formName.submit();

Vielen Dank

Kurt

  1. Hi,

    meine Funktion bekommt einen Wert übergeben, aber dieser kommt nicht an.

    Wer kommt wo nicht an?

    function submitForm(testy) {
    document.getElementById("tempTest").innerHTML = testy;

    Ob ein Wert in der Funktion angekommen ist, testest du mit einem simplen alert *vor* der aktuell ersten Zeile in der Funktion.

    echo "    <A href='javascript: submitForm('Testwert')'>".GA_GUIDE."</A>";

    Bitte poste *clientseitigen* Code, wenn es um die Diskussion clientseitiger Probleme geht!

    Wenn ich beim Aufruf den Testwert weglasse, dann springt er auch in die Funktion. Mit dem Testwert springt er noch nicht einmal hinein.

    Natürlich nicht - weil du die Syntax ja verpfuscht hast.

    <A href='javascript: submitForm('Testwert')'>
            ^ Beginn des Attributinhaltes
                                    ^ Ende des Inhaltes
                                     ... nachfolgend: aus HTML-Sicht Unfug

    Da ich mit der Funktion den SUBMIT Befehl ausführen möchte, allerdings jedesmal von einem anderen Button, wollte ich den Übergabewert mitgeben.

    Warum willst du denn das Abschicken überhaupt mit JavaScript machen?

    Ein handelsübliches input type=submit, und du hättest dein Problem wahrscheinlich gar nicht.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Ein handelsübliches input type=submit, und du hättest dein Problem wahrscheinlich gar nicht.

      MfG ChrisB

      Ich möchte keinen Button vorgesetzt bekommen. Ich habe auch schon mit background-color=transparent probiert, aber dann bekomme ich keine Unterstreichung beim hover.

      Daher ist das Aussehen so schon genau wie ich es haben will.

      Alternativ habe ich herausgefunden, dass ich einfach eine Global erschaffen kann und damit den Wert in die Funktion bekomme.

      Aber in der Funktion:
      document.hierStehtDieVariableFürDenNamenDesForms.submit();

      bekomme ich die Variable nicht eingebunden. Dort müßte ja eine Funktion hinein, die dem submit erklärt, dass das Form einen bestimmten Namen hat.

      1. Aber in der Funktion:
        document.hierStehtDieVariableFürDenNamenDesForms.submit();

        bekomme ich die Variable nicht eingebunden. Dort müßte ja eine Funktion hinein, die dem submit erklärt, dass das Form einen bestimmten Namen hat.

        Weil du bei der Verwendung der Funktion immer noch nicht die Anführungszeichen richtig maskierst.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Aber in der Funktion:
          document.hierStehtDieVariableFürDenNamenDesForms.submit();

          bekomme ich die Variable nicht eingebunden. Dort müßte ja eine Funktion hinein, die dem submit erklärt, dass das Form einen bestimmten Namen hat.

          Weil du bei der Verwendung der Funktion immer noch nicht die Anführungszeichen richtig maskierst.

          mfg Beat

          Danke aber ich stehe auf dem Schlauch. Kannst du mir an dem Beispiel sagen wo Anführungszeichen hinmüssen?
          var tempTest1;
          function submitForm() {
            document.tempTest1.submit();
          }

          1. Mahlzeit Kurt001,

            Weil du bei der Verwendung der Funktion immer noch nicht die Anführungszeichen richtig maskierst.

            Danke aber ich stehe auf dem Schlauch. Kannst du mir an dem Beispiel sagen wo Anführungszeichen hinmüssen?

            1. schrieb Beat "bei der Verwendung der Funktion", nicht "bei der Deklaration der Funktion" und

            2. hat ChrisB die entsprechende Stelle bereits genannt und auch deutlich gemacht, was genau der Fehler ist.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          2. Danke aber ich stehe auf dem Schlauch. Kannst du mir an dem Beispiel sagen wo Anführungszeichen hinmüssen?
            var tempTest1;
            function submitForm() {
              document.tempTest1.submit();
            }

            Liess nochmals das Posting von ChrisB. Er hat dir indiziert, wie dein Code von Parser verstanden wird.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
      2. @@Kurt001:

        nuqneH

        Ich möchte keinen Button vorgesetzt bekommen.

        Du bekommst ihn auch nicht vorgesetzt, sondern die Besucher deiner Seite. Und diese (er)kennen zum Abschicken eines Formulars eher etwas nach Button Aussehendes als etwas nach Link Aussehendes. Was du möchtest, ist zweitrangig.

        Und für diese Kosmetik willst du in Kauf nehmen, dass
        (1) dein Formular nicht wie gewohnt per [Enter]-Taste abgeschickt werden kann?
        (2) dein Formular von vielen Benutzer gar nicht abgeschickt werden kann?

        Wenn es denn sein muss, lass deinen Button wie ein Link aussehen:

        button  
        {  
        	background-color: transparent;  
        	border: 0 none;  
        	color: blue;  
        	cursor: pointer;  
        	padding: 0;  
        	text-decoration: underline;  
        }
        

        Ich habe auch schon mit background-color=transparent probiert, aber dann bekomme ich keine Unterstreichung beim hover.

        ?? Firefox unterstreicht in der Tat nicht, was aber nichts mit der Hintergrundfarbe zu tun hat.

        Workaround:
        <button type="submit"><span>GA_GUIDE</span></button>

        button span  
        {  
        	text-decoration: underline;  
        }
        

        bzw. Unterstreichung nur bei ':hover':

        button:hover span  
        {  
        	text-decoration: underline;  
        }
        

        (und die 'text-decoration'-Deklaration für 'button' weg)

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    2. Verbessert:
      function submitForm(testy) {
        alert('Sprung erfolgreich');
        document.getElementById("tempTest").innerHTML = testy;
      }

      Ob ein Wert in der Funktion angekommen ist, testest du mit einem simplen alert *vor* der aktuell ersten Zeile in der Funktion.

      Was ist denn Clientseitiger Code?

      echo "    <A href='javascript: submitForm('Testwert')'>".GA_GUIDE."</A>";

      Bitte poste *clientseitigen* Code, wenn es um die Diskussion clientseitiger Probleme geht!

      Verbessert:
      echo " <form name='dummyForm' action='index.php' method='POST'>";
      echo "    <input type='hidden' name='mySubmit' value='Tutorial'>";
      $ChrisBTest = "Testwert";
      echo "    <A href='javascript: submitForm($ChrisBTest)'>".GA_GUIDE."</A>";
      echo " </form>";

      Trotzdem kommt kein String an. Wenn ich eine Zahl zuweise, klappt es.

      Kann mir jemand meinen Fehler direkt verbessern.

      Danke

      Kurt

      1. Hi,

        Was ist denn Clientseitiger Code?

        Der Code, den der Client erhält.

        Irgendetwas serverseitiges, wo "echo" drin steht, wird das wohl nicht sein.

        $ChrisBTest = "Testwert";

        Was soll das bitte?

        echo "    <A href='javascript: submitForm($ChrisBTest)'>".GA_GUIDE."</A>";

        Trotzdem kommt kein String an.

        Weil du jetzt nicht mehr die Syntax von HTML verletzt, dafür aber die von JavaScript.

        Also, betrachte (jetzt endlich bitte) den clientseitigen Code.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
      2. Mahlzeit Kurt001,

        Was ist denn Clientseitiger Code?

        Überlege Dir, wo folgende Code-Arten ausgeführt bzw. interpretiert werden:

        1.) HTML:       __________

        2.) PHP:        __________

        3.) Javascript: __________

        Was könnte man also als clientseitigen und was als serverseitigen Code bezeichnen?

        Verbessert:

        Nein, das ist in keinster Weise verbessert. Zum Einen zeigst Du immer noch serverseitigen (PHP-)Code, der mit Deinem clientseitigen (Javascript)-Problem zu tun hat.

        Schau Dir also bitte mal an, wie der HTML- und Javascript-Code aussieht, den Dein PHP-Code erzeugt. Wenn Dir daran etwas auffällt, behebe den Fehler. Wenn nicht, poste genau diesen clientseitigen Code.

        Kann mir jemand meinen Fehler direkt verbessern.

        Ja: Du selbst.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo noch einmal und weiterhin vielen Dank für die vielen Antworten.

          Was ist denn Clientseitiger Code?

          Ok, mit der Erklärung konnte ich was anfangen:

          <form name="dummyForm" action="index.php" method="POST">
          <input type="hidden" name="mySubmit" value="Tutorial">
          <A href="javascript: submitForm('dummyForm')">Tutorial</A>
          </form>

          Das klappt jetzt auch.
          Aber wenn ich eine Variable versuche zu übergeben klappt das nicht mehr.
          Damit scheint es ein PHP Problem bei mir zu sein.
          Hat noch jemand einen Hinweis, wie ich das variabel halten kann?

          $Test = "Testwert";
          echo " <form name='dummyForm' action='index.php' method='POST'>";
          echo "    <input type='hidden' name='mySubmit' value='Tutorial'>";
          echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";
          echo " </form>";

          Ich komm einfach nicht drauf, wie das in PHP ausehen würde.
          Ich habe schon eine Menge durchprobiert, aber ich komm nicht drauf.

          Kurt

          1. Mahlzeit Kurt001,

            <form name="dummyForm" action="index.php" method="POST">
            <input type="hidden" name="mySubmit" value="Tutorial">
            <A href="javascript: submitForm('dummyForm')">Tutorial</A>
            </form>

            So *SOLL* der Code, der beim Client (Browser) ankommt, also aussehen?

            Aber wenn ich eine Variable versuche zu übergeben klappt das nicht mehr.
            Damit scheint es ein PHP Problem bei mir zu sein.

            Nein. Es ist und bleibt ein Javascript-Problem ... dessen Ursache aber in Deinem absoluten Nichtverständnis bzgl. server- und clientseitigem Code und entsprechenden Kontextwechseln zu suchen ist.

            $Test = "Testwert";
            echo " <form name='dummyForm' action='index.php' method='POST'>";
            echo "    <input type='hidden' name='mySubmit' value='Tutorial'>";
            echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";
            echo " </form>";

            Das ist *WIEDER* serverseitiger Code. Herrje, ist es denn so schwer, einfach mal zu zeigen, was dieser PHP-Code bewirkt? Was kommt bei der Ausführung dieses Codes beim Client (Browser) an?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hallo noch einmal

              <form name="dummyForm" action="index.php" method="POST">
              <input type="hidden" name="mySubmit" value="Train11">
              <A href="javascript: submitForm('dummyForm')">Train</A>
              </form>

              <form name="dummyForm1" action="index.php" method="POST">
              <input type="hidden" name="mySubmit" value="Train12">
              <A href="javascript: submitForm('dummyForm1')">Train</A>
              </form>

              So *SOLL* der Code, der beim Client (Browser) ankommt, also aussehen?

              Ja so soll der Code aussehen, der beim Server ankommt.
              Da ich nicht genau weiß wie viele Forms generiert werden (variabel) möchte ich die Erstellung des Codes mit PHP machen.
              Das heißt für mich dass ich den Namen des Forms und den Value des Hidden generieren muss.

              Oder liege ich da ganz falsch?

              Kurt

              1. Mahlzeit Kurt001,

                Da ich nicht genau weiß wie viele Forms generiert werden (variabel) möchte ich die Erstellung des Codes mit PHP machen.

                Das ist ja auch OK.

                Das heißt für mich dass ich den Namen des Forms und den Value des Hidden generieren muss.

                Das ist auch - mehr oder weniger - OK.

                Oder liege ich da ganz falsch?

                Nein. Aber Du hast *IMMER NOCH NICHT* eine der Hauptfragen beantwortet: wie sieht der von PHP generierte und an den Client (Browser) ausgegebene HTML-Code aus. Du zeigst immer nur serverseitigen PHP-Code. Das ist *NICHT ZIELFÜHREND*, da es sich um ein clientseitiges Problem handelt.

                Also hilf Dir selbst und gehe auf die Fragen ein, die Dir hier von zumeist sehr kompetenten Leuten gestellt werden - die tun das nicht zum Spaß oder um Dich zu ärgern, sondern um Dich langsam so an die Lösung heranzuführen, dass Du sie selbst erkennst.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hi Ekki,

                  das was am Client ankommt ist:

                  <form name='dummyForm' action='index.php' method='POST'>
                    <input type='hidden' name='mySubmit' value='Tutorial'>
                    <A href='javascript: submitForm(Testwert)'>Anleitung</A>
                  </form>

                  das habe ich jetzt mal aus 'Quelltext anzeigen' kopiert.
                  Ich hoffe es ist das was Du meintest.

                  1. Mahlzeit Kurt001,

                    <form name='dummyForm' action='index.php' method='POST'>
                      <input type='hidden' name='mySubmit' value='Tutorial'>
                      <A href='javascript: submitForm(Testwert)'>Anleitung</A>
                    </form>

                    das habe ich jetzt mal aus 'Quelltext anzeigen' kopiert.
                    Ich hoffe es ist das was Du meintest.

                    Ja, genau das. Und jetzt überlege mal, was in der dritten Zeile wohl merkwürdig ist ... kleiner Tipp: es hat etwas mit dem Aufruf Deiner Funktion zu tun.

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  2. Hallo,

                    das was am Client ankommt ist:

                    <form name='dummyForm' action='index.php' method='POST'>
                      <input type='hidden' name='mySubmit' value='Tutorial'>
                      <A href='javascript: submitForm(Testwert)'>Anleitung</A>
                    </form>

                    so, jetzt sind wir doch einen Schritt weiter. Und nun vergleiche diesen Code genau mit dem, den du vorher schon gezeigt hast - mit dem Code, der beim Client ankommen *sollte* und von dem EKKi dir schon bestätigt hat, dass er in Ordnung ist.

                    Im derzeitigen Ist-Zustand fehlt also etwas. Und genau das musst du nun noch nachtragen. Eigentlich nur 'ne Kleinigkeit ...

                    So long,
                     Martin

                    --
                    Ich bin 30. Ich demensiere apokalyptisch.
                      (Orlando)
            2. @@EKKi:

              nuqneH

              Damit scheint es ein PHP Problem bei mir zu sein.

              Und ein orthographisches.

              Nein. Es ist und bleibt ein Javascript-Problem

              Bist du sicher?

              echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";

              Das ist *WIEDER* serverseitiger Code.

              Nicht mal ganz zu unrecht, würd ich denken. ;-)

              Qapla'

              --
              Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
              1. Mahlzeit Gunnar Bittersmann,

                Nein. Es ist und bleibt ein Javascript-Problem

                Bist du sicher?

                Wenn Du den Rest des Satzes nicht unterschlagen hättest, bräuchtest Du diese Frage nicht zu stellen.

                echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";

                Das ist *WIEDER* serverseitiger Code.

                Nicht mal ganz zu unrecht, würd ich denken. ;-)

                Grundsätzlich hast Du natürlich Recht - aber damit Kurt001 auch mit eigenen Augen sieht und versteht, was genau das Problem ist, ist es IMHO unerlässlich, ihn darauf hinzuweisen, was genau sein serverseitiger Code produziert ... und *warum* das im Browser *niemals* funktionieren kann.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. @@EKKi:

                  nuqneH

                  echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";

                  Gerade mal nachgelesen: Ganz so schlimm wäre das gar nicht. Wenn es keine Konstante GA_GUIDE gibt, wird der String "GA_GUIDE" verwendet. Vielleicht nicht die Linkbeschriftung, die Kurt001 haben will.

                  Grundsätzlich hast Du natürlich Recht - aber damit Kurt001 auch mit eigenen Augen sieht und versteht, was genau das Problem ist, ist es IMHO unerlässlich, ihn darauf hinzuweisen, was genau sein serverseitiger Code produziert ... und *warum* das im Browser *niemals* funktionieren kann.

                  Damit hast du natürlich recht.

                  Die andere Variable ist wohl das Problem, die gar nicht so variabel ist.

                  Qapla'

                  --
                  Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                  1. @@Gunnar Bittersmann:

                    nuqneH

                    Die andere Variable ist wohl das Problem, die gar nicht so variabel ist.

                    Ich könnte außer mich geraten, dass ich so neben mir stehe. Ich werde jetzt mal in mich gehen.

                    Qapla'

                    --
                    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                  2. Danke jetzt bin ich ja schon mal ein gutes Stück weiter

                    GA_GUIDE ist definiert und funktioniert

                    Wenn es keine Konstante GA_GUIDE gibt, wird der String "GA_GUIDE" verwendet. Vielleicht nicht die Linkbeschriftung, die Kurt001 haben will.

                    So das war also das Problem, das ich "Var" einfügen muss.
                    Vielen Dank für den langen und beschwerlichen Weg.
                    Es hat mir was gebracht, der Dank ist also gar nicht irgendwie komisch gemeint.

                    Die andere Variable ist wohl das Problem, die gar nicht so variabel ist.

                    Aber es löst nicht mein Problem dass ich in der Funktion die übergebene Variable nicht einfügen kann.

                    function submitForm(TESTY) {
                      alert('Sprung erfolgreich');
                      document.TESTY.submit();
                    }

                    Geht das überhaupt oder ist es gar nicht möglich?

                    Kurt

                    1. Mahlzeit Kurt001,

                      Aber es löst nicht mein Problem dass ich in der Funktion die übergebene Variable nicht einfügen kann.

                      function submitForm(TESTY) {
                        alert('Sprung erfolgreich');
                        document.TESTY.submit();
                      }

                      Natürlich nicht - jedenfalls nicht auf diese Weise. Schließlich gibt es vermutlich kein Formular mit dem Namen "TESTY", oder?

                      Geht das überhaupt oder ist es gar nicht möglich?

                      Ja. Wie immer ist <http://de.selfhtml.org/javascript/objekte/forms.htm@title=Schema 4> das Mittel der Wahl.

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      1. @@EKKi:

                        nuqneH

                        Geht das überhaupt oder ist es gar nicht möglich?

                        Ja.

                        Das ist meine Standardantwort auf solche Oder-Verknüpfungen. ;-)

                        Qapla'

                        --
                        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                      2. Danke noch einmal,

                        das hat super funktioniert.

                        Jetzt geht es.

                        Danke an alle die so ausdauernd mitgeholfen haben

                        Kurt

                        Ja. Wie immer ist <http://de.selfhtml.org/javascript/objekte/forms.htm@title=Schema 4> das Mittel der Wahl.

                        MfG,
                        EKKi

          2. @@Kurt001:

            nuqneH

            Aber wenn ich eine Variable versuche zu übergeben klappt das nicht mehr.
            --8<--
            echo "    <A href='javascript: submitForm($Test)'>".GA_GUIDE."</A>";

            Mit Variable meinst du nicht etwa 'GA_GUIDE'?

            Soll ich dir ’n Dollar schenken?

            Und wenn du das Ganze zur Übung(!) zum Laufen gebracht hast, schmeißt du den JavaScript-Krempel wieder weg und machst es richtig, ja?

            Qapla'

            --
            Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
          3. Hi,

            <A href="javascript: submitForm('dummyForm')">Tutorial</A>

            Das klappt jetzt auch.
            Aber wenn ich eine Variable versuche zu übergeben klappt das nicht mehr.
            Damit scheint es ein PHP Problem bei mir zu sein.

            Dann betrachte wiederum den clientseitigen Code - und zwar den, der von deinem PHP-Script erzeugt wird.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.