Ankündigung

Einklappen
Keine Ankündigung bisher.

Dynamische Funktion für Formular

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dynamische Funktion für Formular

    Hallo

    ich hab ein simples Formular ...
    http://joomla.byethost16.com/php.php
    ... welches bei Auswahl von Radiobuttons unterschiedliche felder anzeigt.
    Klickt mal auf "Text", "Spacer" oder "Select" und Ihr seht die diversen Felder.

    Bei den Radiobuttons "Select", "Checkbox" und "Radio" reihen sich durch Klick auf "add" neue Felder mit Appendchild an.

    Ziel: die letzte Reihe "param_1" nun auf klick ebenfalls nochmals hinzuzufügen, param_2, param_3, param_4,...

    Problem: Meine bisherigen Funktionen "text,"textarea",... nutzen getelementsbyId und würden auf Klick von param_1 z.B. auch param_2, param_3... triggern.

    "This" kann ich ja nicht nutzen. Wie geht man so etwas an? Wahrscheinlich ist mein Ansatz bisher gänzlich falsch?

    Im Sourcecode kann man meinen gesamten Code einsehen.

    Danke für Anstösse in die richtige Richtung


  • #2
    Zitat von strgg Beitrag anzeigen
    Im Sourcecode kann man meinen gesamten Code einsehen.
    Erwarte bitte nicht, dass sich irgendjemand in deinen unkommentierten Code „reindenkt“.


    Von deiner Problembeschreibung habe ich nicht viel verstanden, ist mir zu konfus.
    Aber vermutlich willst du nur an irgendeiner Stelle die Objekte, mit denen deine Funktionen arbeiten, nicht fest kodieren, sondern sinnvoll parametrisiert dynamisch halten - so das die jeweilige Funktion die gleiche Aktion auf unterschiedlichen Objekten durchführen kann.

    Kommentar


    • #3
      Erwarte bitte nicht, dass sich irgendjemand in deinen unkommentierten Code „reindenkt“.
      Sorry, habs jetzt nachträglich kommentiert.

      Aber vermutlich willst du nur an irgendeiner Stelle die Objekte, mit denen deine Funktionen arbeiten, nicht fest kodieren, sondern sinnvoll parametrisiert dynamisch halten - so das die jeweilige Funktion die gleiche Aktion auf unterschiedlichen Objekten durchführen kann.
      Genau, weiss aber nicht mit welchem Ansatz ich dies bewerkstelligen kann/soll.

      Kommentar


      • #4
        Zitat von strgg Beitrag anzeigen
        Genau, weiss aber nicht mit welchem Ansatz ich dies bewerkstelligen kann/soll.
        Und ich weiss immer noch nicht, wo genau dein Problem liegt.

        Überlege dir zunächst, was du variabel halten möchtest.
        Und dann überlege dir, wie du das erreichen kannst.

        Kommentar


        • #5
          die struktur ist so

          param1->button11(value11,value12,..)-button12-button13..
          param2->button21(value21,value22,..)-button22-button23
          Ziel: Funktion für die appendchild felder auch nutzbar machen
          PHP-Code:
          function text(){    
          if (
          document.getElementById('button11').checked true){
              
          document.getElementById('feld').style.display '';
                  
          document.getElementById('feld2').style.display 'none';
                  
          document.getElementById('feld4').style.display 'none';
          }} 
          ich weiss nun nicht wie ich eine funktion schreiben kann welche das "increasing" mitmacht. Nehme ich getElementsById so muss bei appenChild ja auch die ID zunehmen und i eine Variable in der allgemeinen Funktion darstellen. "This" kann ich ja glaub ich nicht gebrauchen, da die angesprochenen div's extern sind. Hat JS einen Selectionsmechanismus bei welchem von "this" z.b. x html elemente zurückgegangen wird?

          Bin noch relativ grün bei JS, mit welcher Thematik in JS sollte ich mich hinsichtlich meiner Fragestellung tiefer befassen? dom,xpath eventuell auch?

          Ja, das wie welcher Ansatz, bin auch bereit "neu anzufangen" falls mein bisheriger Ansatz zu statisch war. Danke für Richtungsweisungen

          Danke

          Kommentar


          • #6
            Ich finde das Vorgehen über die generischen IDs generell falsch. Die mögen zwar bequemer anzusprechen sein, alles andere wird aber komplizierter. Für solche Fälle ist das name-Attribut und Array-Bezeichner viel sinnvoller. Du solltest auch darüber nachdenken die Felder nach dem Selektor (Radios) zu gruppieren, um dann bspw. alle Elemente in einer Gruppe anzusprechen. <fieldset> böte sich hier an. Womit sich aber der Nachteil ergibt, dass Du die Felder nicht Selektor-übergreifend verwenden kannst (und damit die Inhalte).
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Hallo

              Wie schaff ich dann die funktionen (text(),textarea(),..) allgemein gültig zu erklären damit hier

              http://joomla.byethost16.com/php.php

              die Funktion auch für Param4 gilt und ohne dass ich für jeden Param die Funktion neu schreiben muss.
              Die Nummerierung der Felder id's kann ich easy aufsteigend machen falls nötig, nur die Funktion müsste halt ebenfalls dynamisch sein.

              Hab schon überlegt mit .parentNode.id oder .length (dabei jedes neue Feld/Param mit einer Stelle mehr) doch ich hab keine Idee wie ich damit den Funktionsinput "text(was hier)", "textarea(was hier)" allgemein gültig hinbekomme.

              Das Nameattibut stellt mich grundsätzlich vor das gleiche Problem wie die Id

              Thanks

              Kommentar


              • #8
                Wie schaff ich dann die funktionen (text(),textarea(),..) allgemein gültig zu erklären damit hier

                http://joomla.byethost16.com/php.php

                die Funktion auch für Param4 gilt und ohne dass ich für jeden Param die Funktion neu schreiben muss.
                Verstehe die Frage nicht.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von strgg Beitrag anzeigen
                  Wie schaff ich dann die funktionen (text(),textarea(),..) allgemein gültig zu erklären damit hier [...] die Funktion auch für Param4 gilt und ohne dass ich für jeden Param die Funktion neu schreiben muss.
                  Na in dem du dir überlegst, was alles als Parameter an die Funktion übergeben, welche Teile des Scriptes/der Objekte, die die Funktion ver-/bearbeitet, variabel gehalten werden sollen - und dich dann ggf. informierst, wie man das im jeweiligen Umfeld macht. (Wie es bspw. beim Zugriff auf Formulare und deren Elemente geht, den Namen variabel zu halten, steht hier beschrieben: SELFHTML: JavaScript / Objektreferenz / elements, Schema #4.)

                  Kommentar


                  • #10
                    Danke für die Hilfe und den Link - Bin mich am einlesen.

                    this.parentNode.childNodes[0].id für Tabselektion, cloneNode (anstatt createElements, clonenodes erfordert updaten der id's!) und der arrayindex von getElementsByName oder getElementById verschlanken bereits deutlich den anfänglichen Code.

                    Kommentar

                    Lädt...
                    X