Extrem schwieriges JS-Problem

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

  • Extrem schwieriges JS-Problem

    Hallo Leute,

    ich habe hier ein extrem schwieriges Javascript Problem. Sicher für einen von Euch Profis nicht der Rede wert. Aber in JS bin ich einfach nicht fit genug, um das hinzubekommen.

    Ich möchte mit JS per Klick immer wieder ein Formular um 2 Select-Felder erweitern. Soweit kein Problem. Bei den neuen Select-Felder soll nach Auswahl des ersten automatisch das zweite ausgewählt werden. Die einzelne Funktion klappt auch wunderbar.

    Packe ich die Funktionen zusammen geht es nicht, da ich nicht weiss, wie ich eine Beziehung herstellen kann.

    Ich hoffe jemand kann mir schnell auf die Sprünge helfen
    Zuletzt geändert von mr_apollon; 09.07.2011, 12:32.

  • #2
    Hallo,

    das Problem ist, dass deine setCalculation-Funktion ein Element über dessen ID sucht, deine moreFields-Funktion aber nach dem Klonen keine neue ID generiert, sondern sie einfach löscht. Error by design.

    Tipp: eine Suche über die ID ist umständlich und unperformant. Übergib stattdessen einfach das Element.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo AmicaNoctis,

      erstmal danke das du dir das angeschaut hast. wie gesagt habe ich leider von JS keine Ahnung und habe mir den Code zusammengesucht. Kannst Du mir nicht helfen, ich weiss echt nicht wie ich das anstellen kann

      Kommentar


      • #4
        Zitat von mr_apollon Beitrag anzeigen
        habe mir den Code zusammengesucht. Kannst Du mir nicht helfen, ich weiss echt nicht wie ich das anstellen kann
        Ich war mir sicher, ich hätte dir schon geholfen.

        Wenn du fertigen Code willst: Fehlanzeige.

        Wenn du Hilfe zur Selbsthilfe willst, dann bist du hier richtig, musst aber konkretere Fragen stellen und ein gewisses Maß an Lernbereitschaft zeigen. Das könntest du tun, indem du das von mir zuvor geschriebene im Kontext deiner Anwendung reflektierst.

        Ich sagte ja, übergib das Element, nicht die ID. Versuch mal die Stellen im Code zu finden, wo diese ID übergeben wird. Wenn du dort [FONT="Courier New"]this[/FONT] schreibst, wird das Element übergeben und du kannst dir die Suche danach in deiner Funktion sparen.

        Wenn du dich immer noch nicht geholfen fühlst, stell bitte konkrete Fragen.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Besten Dank

          Der Tip hat weitergeholfen...

          Kommentar


          • #6
            Sorry ich muss nochmal nerven. Ich habe es mit this nicht hinbekommen, es aber anders gelöst. So klappt es. Dachte ich

            Wenn ich in einer neuen Zeile die Auswahl vornehme geht es, aber in der vorhergehenden Zeile nicht. Kannst Du mir da auch noch einen Tip geben?

            Sorry, ich würde genauere Fragen stellen, wenn ich wüßte nach was ich fragen soll...
            Zuletzt geändert von mr_apollon; 09.07.2011, 14:57.

            Kommentar


            • #7
              Zitat von mr_apollon Beitrag anzeigen
              Wenn ich in einer neuen Zeile die Auswahl vornehme geht es, aber in der vorhergehenden Zeile nicht.
              Meinst du diese hier, die bereits von Anfang an im HTML-Code steht?
              Code:
              <div id="readroot" style="display: none">
               
              		<select name="auswahl_" onchange="" style="width:200px" id="auswahl_">
              Nun, in der reagierst du auch nicht besonders stark auf den Event ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Ja, ich wollte mit newField[i].onchange = function(){setCalculation(counter)}; dort die onchange Funktion umschreiben. Klappt auch soweit, aber eben nur bei der neuen Zeile, bei den vorhergehenden dann nicht mehr. mich würde auch interessieren wie ich das ohne ID hinbekomme. Analog dem Tip von AmicaNoctis, allerdings bin ich wahrscheinlich zu dumm dafür.

                Wie übergebe ich das Element?!

                Vor JS habe ich mich immer gedrückt, aber nun brauche ichs

                Kommentar


                • #9
                  Zitat von mr_apollon Beitrag anzeigen
                  Klappt auch soweit, aber eben nur bei der neuen Zeile, bei den vorhergehenden dann nicht mehr.
                  Beim bestehenden Selectfeld hast du das ja auch nicht gemacht.

                  mich würde auch interessieren wie ich das ohne ID hinbekomme.
                  In dem du direkt Referenzen auf die Elemente übergibst.

                  Wie übergebe ich das Element?!
                  Wenn der Eventhandler im HTML notiert ist - dann kannst du this als Parameter beim Aufruf notieren.

                  Wenn du ihn per JavaScript zuweist, über onclick=function ... dann brauchst du es gar nicht übergeben, als erster Parameter wird dabei immer die Referenz auf das Element an die Funktion übergeben.

                  Analog dem Tip von AmicaNoctis, allerdings bin ich wahrscheinlich zu dumm dafür. [...]
                  Vor JS habe ich mich immer gedrückt, aber nun brauche ichs
                  Na dann wird's Zeit, dass du dich mit den Grundlagen beschäftigst.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Besten Dank an Euch beide. Habe es mit der Übergabe als Objekt und Umstellung von ID auf Name jetzt endlich geschafft.

                    Super Tipps und das so schnell

                    Kommentar

                    Lädt...
                    X