Spliffster: hidden Input einen Wert dynamisch zuweisen

Hallo,

ich muss, wie im Titel schon steht, einem Hidden Inputfeld per Javascript einen Wert zuweisen. Die Funktion die ich dafür geschrieben habe wird über den onChange Handler aufgerufen und übergibt dabei auch gleich den neuen Wert des Textfeldes an die Funktion. Bis dahin klappt auch alles wunderbar(per Alert überprüft), nun schaffe ich es aber nicht den Wert bzw. die Variable in das Hidden-field zu schreiben.

Hier die Funktion:

  
function reName(doc_name) {  
  
document.save_it_baby.newdocname.value=doc_name;  
write.document(document.save_it_baby.new_doc_name.value);  
}  

Sollte laut der Referenz ja eigentlich funktionieren. Zwischendurch habe ich es dann auch schon mal "setAttribute" probiert, das hat aber leider genauso wenig funktioniert. Für eine Lösung wäre ich sehr dankbar.

Gruss
Spliffster

  1. hi,

    [...] nun schaffe ich es aber nicht den Wert bzw. die Variable in das Hidden-field zu schreiben.

    function reName(doc_name) {

    document.save_it_baby.newdocname.value=doc_name;

    damit _hast_ du dem value-attribut des feldes newdocname des formulars save_it_baby bereits den wert des an die funktion übergebenen parameters doc_name zugewiesen.

    write.document(document.save_it_baby.new_doc_name.value);

    was willst du damit noch bezwecken?
    das ist doch vollkommen sinnfrei an dieser stelle.

    damit würdest du den value-wert ins dokument schreiben - da du dies aber nach dem rendern des dokumentes machst, zerstört es damit dein aktuelles dokument.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. document.save_it_baby.newdocname.value=doc_name;

      damit _hast_ du dem value-attribut des feldes newdocname des formulars save_it_baby bereits den wert des an die funktion übergebenen parameters doc_name zugewiesen.

      Eben nicht, wie ich Thomas eben schon geschrieben habe funktioniert das leider nicht(weiss Gott warum).

      write.document(document.save_it_baby.new_doc_name.value);

      was willst du damit noch bezwecken?
      das ist doch vollkommen sinnfrei an dieser stelle.

      damit würdest du den value-wert ins dokument schreiben - da du dies aber nach dem rendern des dokumentes machst, zerstört es damit dein aktuelles dokument.

      Ich habe es vermutet, nur da es in dem Beispiel zu "element.value" in der Funtkionsreferenz hier auf SelfHTML angewendet wird, bin ich davon ausgegangen das es richtig ist. Und ich dafür irgendeinen, wie auch immer gearteten, Fehler gemacht habe.

      Würde es denn ein Problem darstellen wenn zwei verschiedene Formulare auf der Seite enthalten sind? Dürfte es zwar eigentlich nicht, da beide jeweils mit ihrem korrekten Namen angesprochen werden, aber möglich ist alles.

      Gruss

      Spliffster

  2. Hallo,

    function reName(doc_name) {

    document.save_it_baby.newdocname.value=doc_name;
    write.document(document.save_it_baby.new_doc_name.value);
    }

    Also:
    save_it_baby: ist der Name deines Formulars
    newdocname: ist der Name des Hidden-Fields im Formular

    was ist aber new_doc_name ?
    und was übergibst du mit "doc_name".

    funktionieren würde es so:
    document.formName.HiddenFieldName.value = document.formName.FieldName.value;

    Grüße
    Thomas

    --
    Surftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/
    1. Hallo Thomas,

      "new_doc_name" war ein Fehler beim übertragen. Mit "doc_name" wird der Wert des Formularfeldes das geändert wurde gleich mitübertragen, so dass ich nur noch dem hidden-field den Wert zuweisen muss. Und das auslesen des geänderten Wertes funktioniert auch problemlos. Nur das zuweisen eben nicht. Ich habe es jetzt jeweils damit:

      document.formName.HiddenFieldName.value = document.formName.FieldName.value;

      und damit:

      document.formName.HiddenFieldName.value = doc_name;

      probiert. Aber keines von beidem funktioniert.

      Stellt es denn ein Problem dar wenn auf einer Seite zwei verschiedene Formulare vorhanden sind? Dadurch bin ich auch überhaupt erst gezwungen den geänderten Wert auszulesen und dem anderen Formular zuzuweisen.

      1. hi,

        Nur das zuweisen eben nicht. Ich habe es jetzt jeweils damit:

        document.formName.HiddenFieldName.value = document.formName.FieldName.value;

        du willst also, dass das feld HiddenFieldName als value-wert den wert zugewiesen bekommt, der aktuell im feld FieldName bzw. dessen value steht?

        dann kann ich dein problem nicht nachvollziehen, dass sollte so problemlos klappen.

        wenn das "nicht funzt", versuche bitte, von deinem browser eine aussagekräftige fehlermeldung zu bekommen. wie das geht, sagt dir http://glasgoogle.de/.

        Stellt es denn ein Problem dar wenn auf einer Seite zwei verschiedene Formulare vorhanden sind?

        nein.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. wenn das "nicht funzt",

          So jung bin ich auch nicht mehr.

          versuche bitte, von deinem browser eine aussagekräftige fehlermeldung zu bekommen. wie das geht, sagt dir http://glasgoogle.de/.

          Auf die Idee war ich auch schon gekommen.

          Inzwischen ist mir dafür dann auch des Rätsels Lösung erschienen. Es lag einzig an meiner Naivität zu glauben Mozilla oder der IE würden den Quellcode, den man sich ja schön anzeigen lassen kann, auch aktualisiert anzeigen nachdem JS etwas neu eingefügt hat und man den Quellcode erneut aufruft. Weswegen ich nicht getestet habe ob die Variable auch letztendlich an das Script übergeben wird welches das Formular verarbeitet.

          Also Problem gelöstet, danke für eure Mühe!

          Ich habe aber noch eine andere kurze Frage, woran könnte es liegen das der IE andauernd den JS-Fehlercode am Ende einer Seite anzeigt? Obwohl der enthaltene Code keinen Fehler hervorruft(die 0 wird angezeigt).

          Gruss

          Spliffster

          1. hi,

            Es lag einzig an meiner Naivität zu glauben Mozilla oder der IE würden den Quellcode, den man sich ja schön anzeigen lassen kann, auch aktualisiert anzeigen nachdem JS etwas neu eingefügt hat und man den Quellcode erneut aufruft.

            nein, das tun sie in der tat nicht.
            bei "quelltext anzeigen" bekommst du immer nur den HTML-code zu sehen, wie er vom server geliefert wurde.
            per JS dynamisch daran vorgenommene änderungen siehst du so nicht, die setzen die browser nur intern um.

            wenn dich interessiert, was das JS aus deiner ursprünglichen HTML-struktur gemacht hat, schau dir mal den "DOM Inspector" im firefox an - der zeigt dir sehr schön, welche elementknoten aktuell wo existieren, welche werte sie haben, etc. - und bezieht natürlich per javascript erzeugte/manipulierte knoten mit ein.

            Ich habe aber noch eine andere kurze Frage, woran könnte es liegen das der IE andauernd den JS-Fehlercode am Ende einer Seite anzeigt? Obwohl der enthaltene Code keinen Fehler hervorruft(die 0 wird angezeigt).

            etwas genauer bitte.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. etwas genauer bitte.

              In die Seite habe ich ein Script eingebaut welches die Bildschrimauflösung des Clients ermittelt und dementsprechende Änderungen an den Style-Eigenschaften bestimmter Elemente vornimmt. Das, für mich, seltsame dabei ist, dass es das zweite Script ist welches ich in die Seite eingebettet habe und erst seitdem wird der Fehlercode im IE angezeigt. (Der JS-Debugger ist deaktiviert.)

                
              if(screen.width < 1024){  
              if (document.all){  
              document.all.ausderreihe.style.setAttribute("width","93","false");  
              document.all.tags("div")[0].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[1].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[2].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[3].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[4].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[5].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[6].style.setAttribute("fontSize","12","false");  
              document.all.tags("div")[7].style.setAttribute("fontSize","12","false");  
              }  
              }  
              if(screen.width == 1024){if (document.all)document.all.ausderreihe.style.setAttribute("width","115","false");}  
              if(screen.width > 1024){if (document.all)document.all.ausderreihe.style.setAttribute("width","148","false");}  
              
              

              Das Script ist, logischerweise, direkt in das Body-Element eingebaut.

              Gruss
              Spliffster

              1. Hallo Spliffster,

                if(screen.width < 1024){

                Bei vielen Besuchern ist das Browserfenster nicht so breit wie der Bildschirm. Besser wäre es also, die Bildschirmweite abzufragen.

                if (document.all){

                Du solltest Dich unbedingt mit DOM beschäftigen, Stichwort getElementById.

                auf der Seite http://physik.uni-muenster.de ermittle ich die Größe des Anzeigebereichs und lade entsprechend große Bilder.

                Übrigens, man kann die Größe von DIVs und anderen Elementen auch in % angeben.

                Gruß, Jürgen

      2. Hallo,

        Ich habe es jetzt jeweils damit:

        document.formName.HiddenFieldName.value = document.formName.FieldName.value;

        *sigh*

        formName steht natürlich symbolisch für den Namen deines Formulars.
        Da ich nicht weiss wie der heisst, habe ich "formName" genommen.
        Also wenn dein Formular tatsächlich "save_it_baby" heisst, dann ersetze formName damit.Desselbe gilt für HiddenFieldName.

        document.save_it_baby.newdocname.value = document.save_it_baby.doc_name.value;

        Stellt es denn ein Problem dar wenn auf einer Seite zwei verschiedene Formulare vorhanden sind?

        *sigh²*

        Ja, das stellt ein "Problem dar, du muss dann entsprechend den Namen des anderen Formulars verwenden.
        Also: (symbolisch, du muss also die Namen richtig ersetzen!)

        document.NameDesFormularsDasSpeichert.NameDesVerstecktenInputs.value = document.NameDesFormularsAusDemGespeichertWerdenSoll.NameInputsDessenWertÜbergenbenWerdenSoll.value;

        Ansonsten bitte _immer_ einen Link angeben, wo man den Quellcode sehen kann.

        Grüße
        Thomas

        --
        Surftip: kennen Sie schon Pipolino's Clowntheater?
        http://www.clowntheater-pipolino.net/
        1. **Sigh** -_-'

          Es wäre sicher eine gute Idee gewesen wenn du vorher meinen letzten Post gelesen hättest.

          1. Hallo,

            Es wäre sicher eine gute Idee gewesen wenn du vorher meinen letzten Post gelesen hättest.

            Du meinst https://forum.selfhtml.org/?t=102676&m=631703 ?

            Habe ich gelesen. Und? Was hat das mit dem Formular-Problem zu tun?
            (Wichtig scheint es ja eh nicht zu sein, denn dann hättest du schon längt die Seite mit dem Problem verlink, oder?)

            Grüße
            Thomas

            --
            Surftip: kennen Sie schon Pipolino's Clowntheater?
            http://www.clowntheater-pipolino.net/