24shorty: Greasemonkey: dynamischen Wert in input type="text" eintragen

Hallo,
Ich möchte auf einer Internetseite einen dynamisch generierten Wert mittels Greasemonkey automatisch in ein Formularfeld eintragen lassen.

So steht es dort wenn ich mir den Quelltext anzeigen lasse:

<td align="center">  
<input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" />  
<br />  
<i> (mögl. 4500)</i>  
</td>

Ich möchte nun den Wert 4500 gerne als value in amount[1] eintragen. Der Quellcode soll also folgendermaßen aussehen:

  
<td align="center">  
<input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="4500" />  
<br />  
<i> (mögl. 4500)</i>  
</td>  

Leider ist die Zahl dynamisch. Sie wird also in einem PHP erstellt. Man müsste also wohl irgendwie mit Stringoperationen arbeiten?!
Leider kenne ich mich recht wenig mit JavaScript aus weswegen ich hier nach Hilfe fragen wollte.
Danke!

  1. Moin!

      
    <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="4500" />  
    
    

    Leider ist die Zahl dynamisch. Sie wird also in einem PHP erstellt. Man müsste also wohl irgendwie mit Stringoperationen arbeiten?!

    Nehmen wir an, Dein Wert steht bereits in einer PHP-Variable $amount:

      
    <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="<?php echo $amount;?>" />  
    
    

    Leider kenne ich mich recht wenig mit JavaScript aus weswegen ich hier nach Hilfe fragen wollte.

    Brauchst Du (hier) gar nicht.

    Ansonsten:
    Du willst die Eigenschaft value eines mit einer ID versehenen Formularelements ändern.

      
    <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="" />  
    <script type="text/javascript">  
    document.getElementById('amount[1]').value="<?php echo $amount;?>";  
    </script>  
    
    

    Danke!

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Moin!

      <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="4500" />

      
      >   
      > > Leider ist die Zahl dynamisch. Sie wird also in einem PHP erstellt. Man müsste also wohl irgendwie mit Stringoperationen arbeiten?!  
      >   
      > Nehmen wir an, Dein Wert steht bereits in einer PHP-Variable $amount:  
      > ~~~php
        
      
      > <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="<?php echo $amount;?>" />  
      > 
      
      

      Leider kenne ich mich recht wenig mit JavaScript aus weswegen ich hier nach Hilfe fragen wollte.
      Brauchst Du (hier) gar nicht.

      Ansonsten:
      Du willst die Eigenschaft value eines mit einer ID versehenen Formularelements ändern.

      <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" value="" />
      <script type="text/javascript">
      document.getElementById('amount[1]').value="<?php echo $amount;?>";
      </script>

      
      >   
      >   
      >   
      > > Danke!  
      > MFFG (Mit freundlich- friedfertigem Grinsen)  
      >   
      > fastix  
      >   
        
      Danke für die Antwort.  
      Habe beim antworten einen Fehler gemacht. Die Antwort steht nun hier: [http://forum.de.selfhtml.org/?t=193708&m=1294109](https://forum.selfhtml.org/?t=193708&m=1294109)
      
  2. Danke für die schnelle Antwort.

    Hab mich wohl etwas falsch / missverständlich ausgedrückt.
    Ich habe leider keinen "Zugriff" auf die PHP Datei. Also zur Erklärung: Es geht um eine Seite eines Browsergames. Dort ist eine Reihe von Input Feldern welche alle nicht gefüllt sind. Darunter steht was sie für einen maximalen Wert annehmen können. Da ich IMMER bei allen den maximalen Wert eintragen muss wollte ich nun (auch interessehalber) ein Greasemonkey-Skript schreiben welches das Formular füllt.

    Ich bin auch grade einen Schritt weiter gekommen. Und zwar ist es mir gelungen den einzelnen Feldern je nach ID einen value zu geben.
    mein Skript sieht bisher folgendermaßen aus:

    var trikotvalue = 1
    var cappyvalue = 2
    ...

    var trikot = document.getElementById('amount[1]');
    if (trikot) {
        trikot.setAttribute("value", trikotvalue, 0);
    }

    var cappy = document.getElementById('amount[2]');
    if (cappy) {
        cappy.setAttribute("value", cappyvalue, 0);
    }

    ...

    Nun fehlen mir praktisch "nur noch" die einzelnen Werte. Diese sind jedes mal unterschiedlich und auch in jedem Feld unterschiedlich.

    <td align="center">  
    <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" />  
    <br />  
    <i> (mögl. 4500)</i>  
    </td>
    

    Da ich leider keinen zugriff auf die xls Datei habe weiß ich nicht wie die Variablen bezeichnet sind. Ausserdem wüsste ich nict ob ich diese einfach in meinem Skript verwenden kann?

    Ich müsste also (wohl über String-Operationen) den Wert nach folgendem String:
    "name="amount[1]" type="text" />
    <br />
    <i> (mögl. "
    einer Variable zuweisen.

    1. @@24shorty:

      nuqneH

      Danke für die schnelle Antwort.

      Wenn du fastix® antworten willst, dann tu dies bitte auch. Das hier ist ein Forum, kein Board.

      Nun fehlen mir praktisch "nur noch" die einzelnen Werte. Diese sind jedes mal unterschiedlich und auch in jedem Feld unterschiedlich.

      Ist das Markup denn auch unterschiedlich?

      [code lang=html]<td align="center">
      <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" />
      <br />
      <i> (mögl. 4500)</i>

      Oder kommt nach dem 'input' immer ein 'br' und danach ein 'i', in dem der dich interssierende Wert zu finden ist? Dann kannst du dich <http://de.selfhtml.org/javascript/objekte/node.htm#next_sibling@title=durchs DOM hangeln>.

      Ich müsste also (wohl über String-Operationen) den Wert nach folgendem String:
      "name="amount[1]" type="text" />
      <br />
      <i> (mögl. "
      einer Variable zuweisen.

      Nein. Inhalt des Textknotens des 'i' http://de.selfhtml.org/javascript/objekte/node.htm#node_value@title=auslesen. Wenn da immer "mögl. " steht, den <http://de.selfhtml.org/javascript/objekte/string.htm#substr@title=String danach> verwenden, ansonsten den Wert <http://de.selfhtml.org/javascript/objekte/string.htm#match@title=per regulärem Ausdruck herausfiltern>.

      Qapla'

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

        nuqneH

        Danke für die schnelle Antwort.

        Wenn du fastix® antworten willst, dann tu dies bitte auch. Das hier ist ein Forum, kein Board.

        Sorry, das ist ausversehen passiert.

        Nun fehlen mir praktisch "nur noch" die einzelnen Werte. Diese sind jedes mal unterschiedlich und auch in jedem Feld unterschiedlich.

        Ist das Markup denn auch unterschiedlich?

        Nein das Markup ist immer identisch!

        [code lang=html]<td align="center">
        <input id="amount[1]" class="InputDefault" size="10" name="amount[1]" type="text" />
        <br />
        <i> (mögl. 4500)</i>

        Oder kommt nach dem 'input' immer ein 'br' und danach ein 'i', in dem der dich interssierende Wert zu finden ist? Dann kannst du dich <http://de.selfhtml.org/javascript/objekte/node.htm#next_sibling@title=durchs DOM hangeln>.

        Ist mein erster Versuch mit Greasemonkey. Bin also noch recht unbeholfen. Hab mich gerade mit dem DomInspector auseinander gesetzt. Aber so richtig weiter bin ich damit noch nicht.

        Ich müsste also (wohl über String-Operationen) den Wert nach folgendem String:
        "name="amount[1]" type="text" />
        <br />
        <i> (mögl. "
        einer Variable zuweisen.

        Nein. Inhalt des Textknotens des 'i' http://de.selfhtml.org/javascript/objekte/node.htm#node_value@title=auslesen. Wenn da immer "mögl. " steht, den <http://de.selfhtml.org/javascript/objekte/string.htm#substr@title=String danach> verwenden, ansonsten den Wert <http://de.selfhtml.org/javascript/objekte/string.htm#match@title=per regulärem Ausdruck herausfiltern>.

        Den das rausfiltern bekomme ich hin und das auslesen aller "i" tabs auch. Weiß nur gerade nicht wie ich diese dann dein betreffenden Feldern zuweisen kann?!

        Qapla'

        Auch dir Danke für die schnelle Antwort!

        1. @@24shorty:

          Den das rausfiltern bekomme ich hin und das auslesen aller "i" tabs auch. Weiß nur gerade nicht wie ich diese dann dein betreffenden Feldern zuweisen kann?!

          Das sagte doch fastix® schon. Nur dass der Wert nicht von <?php echo … ?> kommt, sodern der aus dem 'i'-Element ermittelte ist.

          Qapla'

          PS: Zitiere bitte sinnvoll, nicht alles.

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

            Den das rausfiltern bekomme ich hin

            Ich glaub hier hab ich doch zuviel versprochen.
            Also ich hab nun folgenden Code hinzugefügt:

              
            var allis, thisi;  
            allis = document.getElementsByTagName('i');  
            for (var i = 0; i < allis.length; i++) {  
                thisi = allis[i];  
                // do something with thisTextarea  
            	alert(thisi);  
            }  
            
            

            Dies liefert mir nun 11mal einen alert mit folgendem Inhalt: "[object XPCNativeWrapper [object HTMLSpanElement]]"

            Bin nun grad überfragt wie ich den Inhalt zwischen dem <i> und dem </i> "erfragen kann"?!

            1. @@24shorty:

              nuqneH

              Bin nun grad überfragt wie ich den Inhalt zwischen dem <i> und dem </i> "erfragen kann"?!

              Das hatte ich dir bereits verlinkt. Liest du eigentlich die dir gegebenen Antworten?

              Qapla'

              --
              Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
              1. Das hatte ich dir bereits verlinkt. Liest du eigentlich die dir gegebenen Antworten?

                Natürlich lese ich die. Und es tut mir sehr leid, dass es anders wirkt.

                Du hattest mir viele Sachen verlinkt und da dies wie gesagt mein erster Versuch ist hatte ich jetzt einige Stunden damit verbracht zu verstehen was mit den einzelnen Links "zu tun ist". Bei dem betreffenden hab ichs wohl wirklich einfach nicht verstanden. Nun (nachdem du mich nochmal mit der Nase drauf gedrückt hast) konnte ich nun meinen Code folgendermaßen ergänzen:

                  
                var allis, thisi;  
                allis = document.getElementsByTagName('i');  
                for (var i = 0; i < allis.length; i++) {  
                    thisi = allis[i];  
                    // do something with thisi  
                	inhalt = thisi.firstChild.nodeValue;  
                	alert(inhalt);  
                }  
                  
                var trikotvalue = 1  
                var cappyvalue = 2  
                var schalvalue = 3  
                var regenschirmvalue = 4  
                var fahnevalue = 5  
                var wimpelvalue = 6  
                var baellevalue = 7  
                var tassenvalue = 8  
                var hosenvalue = 9  
                var aufnaehervalue = 10  
                var tshirtsvalue = 11  
                  
                var trikot = document.getElementById('amount[1]');  
                if (trikot) {  
                    trikot.setAttribute("value", trikotvalue, 0);  
                }  
                  
                var cappy = document.getElementById('amount[2]');  
                if (cappy) {  
                    cappy.setAttribute("value", cappyvalue, 0);  
                }  
                  
                var schal = document.getElementById('amount[3]');  
                if (schal) {  
                    schal.setAttribute("value", schalvalue, 0);  
                }  
                  
                var regenschirm = document.getElementById('amount[4]');  
                if (regenschirm) {  
                    regenschirm.setAttribute("value", regenschirmvalue, 0);  
                }  
                  
                var fahne = document.getElementById('amount[5]');  
                if (fahne) {  
                    fahne.setAttribute("value", fahnevalue, 0);  
                }  
                  
                var wimpel = document.getElementById('amount[6]');  
                if (wimpel) {  
                    wimpel.setAttribute("value", wimpelvalue, 0);  
                }  
                  
                var baelle = document.getElementById('amount[8]');  
                if (baelle) {  
                    baelle.setAttribute("value", baellevalue, 0);  
                }  
                  
                var tassen = document.getElementById('amount[9]');  
                if (tassen) {  
                    tassen.setAttribute("value", tassenvalue, 0);  
                }  
                  
                var hosen = document.getElementById('amount[11]');  
                if (hosen) {  
                    hosen.setAttribute("value", hosenvalue, 0);  
                }  
                  
                var aufnaeher = document.getElementById('amount[12]');  
                if (aufnaeher) {  
                    aufnaeher.setAttribute("value", aufnaehervalue, 0);  
                }  
                  
                var tshirts = document.getElementById('amount[19]');  
                if (tshirts) {  
                    tshirts.setAttribute("value", tshirtsvalue, 0);  
                }  
                
                

                Die einzelnen Input Felder werden erfolgreich mit den vorgegebenen Variablen gefüllt und ich bekomme 11 Alerts mit den Strings "mögl. xxxx"

                Folglich funktioniert nun alles bis auf:
                Ich muss aus den Strings noch die Zahl ausschneiden. Denk das bekomme ich hin wobei sich dies etwas schwerer gestalltet weil die Zahl manchmal 4 udn manchmal 5 Zahlen hat.
                Und dann muss ich noch diese Zahlen den einzelnen Variablen zuordnen, damit sie in das Formular eingetragen werden. Wie das geht weiß ich noch nicht.

                Wäre also für einen weiteren Hinweise/Tipp sehr dankbar!

                1. Folglich funktioniert nun alles bis auf:
                  Ich muss aus den Strings noch die Zahl ausschneiden. Denk das bekomme ich hin wobei sich dies etwas schwerer gestalltet weil die Zahl manchmal 4 udn manchmal 5 Zahlen hat.

                  Gerade ist mir ein/aufgefallen: ich muss ja garnicht die Zahl ausschneiden sondern ich kann am Anfang "(mögl. " und am Ende einfach ")" wegschneiden udn schon habe ich die betreffende Zahl.

                  Und dann muss ich noch diese Zahlen den einzelnen Variablen zuordnen, damit sie in das Formular eingetragen werden. Wie das geht weiß ich noch nicht.

                  Wäre also für einen weiteren Hinweise/Tipp sehr dankbar!

                  1. @@24shorty:

                    nuqneH

                    Gerade ist mir ein/aufgefallen: ich muss ja garnicht die Zahl ausschneiden sondern ich kann am Anfang "(mögl. " und am Ende einfach ")" wegschneiden udn schon habe ich die betreffende Zahl.

                    Der Einfall hätte doch glatt von mir sein können. (Auch das hatte ich dir bereits verlinkt.)

                    Qapla'

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

                      nuqneH

                      Gerade ist mir ein/aufgefallen: ich muss ja garnicht die Zahl ausschneiden sondern ich kann am Anfang "(mögl. " und am Ende einfach ")" wegschneiden udn schon habe ich die betreffende Zahl.

                      Der Einfall hätte doch glatt von mir sein können. (Auch das hatte ich dir bereits verlinkt.)

                      Qapla'

                      in einem anderem Forum wurde mir nun geholfen indem ich nicht nur 1000Links sondern auch mal ein wenig Erklärung und Code dazu bekommen habe. Klingt jetzt sicher wie meckern was mir nicht unbedingt zusteht wenn man kostenlos Hilfe bezieht aber da ich hier nicht soviel Hilfe bekommen habe trotzdem noch der Tipp:
                      Wenn jemand von JS udn GM noch nicht so viel Ahnung hat, dann ist er halt etwas verwirrt wenn man ihm ohne Kommentar und Erklärung einige Einzeiler mit massig Links "hinwirft".

                      Code sieht jetzt folgendermaßen aus:

                      var ganzer_wert = document.getElementById('amount[1]').nextSibling.nextSibling.firstChild.data;  
                      // das "(moegl. " und die schliessende runde Klammer wegschneiden  
                      var zahlenwert = ganzer_wert.substring(8, ganzer_wert.length - 1);  
                      // den ausgelesenen Wert in das Formular-Feld einfuegen  
                      document.getElementById('amount[1]').value = zahlenwert;  
                      
                      
                      1. @@24shorty:

                        nuqneH

                        in einem anderem Forum wurde mir nun geholfen indem ich nicht nur 1000Links sondern auch mal ein wenig Erklärung und Code dazu bekommen habe.

                        Hinter den Links in die Tiefen von SELFHTML verbirgt sich mehr als ein wenig Erklärung und auch Bespielcode dazu. Einfach mal draufclicken! ;->

                        Qapla'

                        --
                        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                      2. in einem anderem Forum wurde mir nun geholfen indem ich nicht nur 1000Links sondern auch mal ein wenig Erklärung und Code dazu bekommen habe.

                        Warum gibst du dich mit wenig zufrieden? Hinter den Links verstecken sich doch die langen Erklärungen.

                        Struppi.