Ankündigung

Einklappen
Keine Ankündigung bisher.

addEventListener in for-Schleife

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von estebu Beitrag anzeigen
    Was ich mittlerweile begriffen habe: auf die Werte aus "match" kann ich nur innerhalb der Schleife zugreifen. Das bedeutet: der EventListener muss auch zwingend innerhalb der Schleife passieren
    nein bedeutet es nicht,
    du setzt den event listener aiuf das parent element, in wechles du die die ganzen elemnte einträgst, in deinem fall ein <ul> </ul> ?) und gut ist, dann kannst du auch den ganzen inhalt drinnen aufbauen wie oft du willst.

    Kommentar


    • #17
      Zitat von estebu Beitrag anzeigen
      Das stimmt nicht! Ich habe den vollständigen Code bereits gepostet (siehe oben) - habe nur lediglich die Quelle der JSON Daten anonymisiert. Der Code ist durchaus lauffähig und ich habe jetzt keine Lust her, mich ständig zu rechtfertigen.
      Nein, er ist nicht lauffähig. Probier doch den Link aus, den ich gepostet habe und drück auf "Run". Wenn der Code bei dir so läuft, hast du einen Wunder-Browser, der ganz anders funktioniert als jeder andere Browser.

      Kommentar


      • #18
        Okay, da hast du natürlich recht - das css und die ausführende Seite fehlen da noch, aber ich dachte nicht, dass sich jemand tatsächlich die Mühe macht, den Code auszuprobieren.
        Hier ist es dann mal komplett:

        Kommentar


        • #19
          Was ich nun mittlerweile bemerkt habe ist, dass der angegebene EventListener
          Code:
           x.addEventListener("click", myClickFunction);
          natürlich bei jeder Schleife wieder überschrieben wird und daher am Ende immer den zuletzt erhaltenen Wert enthält. Man kann wahrscheinlich EventlLitsener auch nicht speichern sozusagen, um mehrere davon gleichzeitig nach dem Durchlaufen der Schleife zu haben, befürchte ich? Da liegt wohl auch das Problem. Die HTML-Elemente werden bei jedem Durchlauf erzeugt und im DOM abgebildet und bleiben aber bestehen. Aber ich schätze, man versteht ganz gut, was ich erreichen möchte. Es ist ja der Sinn einer Autocomplete-Funktion auf einer Webseite, dass man sich dann letztendlich für eines der ausgegebenen (und vorher durch das Eintippen gefilterten) Einträge entscheiden möchte, um damit dann weiter zu arbeiten. Wenn ich nun aber die einzelnen Elemente nicht getrennt voneinander ansprechen kann (weil mir einfach das Know-How dazu fehlt), ist das recht frustrierend ... Muss ich wohl doch auf eine fertige Lösung von jQueryUI zurückgreifen... Schade. Ich wollte es mal selbst "basteln". Danke nochmals für eure Hinweise.

          Kommentar


          • #20
            man kann nicht etwas selbst basteln ohne Grundkenntnisse in javascript.

            Der Code wurde gar nicht geändert.

            Programiert wird es nicht mit langer Postmatrazen, sondern mit harter Logik und klarer Vorstellung für jeden Zeichen im Code, wofür es da steht und was es da tut.

            Kannst du den Code im Ganzen nich folgen, zerteile und teste ihn Schrit-für-Schrit.
            Gebe harte Werte ein, reduziere die Schleife bis zum einen Element.
            Und so weiter, bis du an der Fehlerhafte stelle kommst.

            Woran der Fehler liegen könnte, wurde schon mal gesagt.

            Signaturrrrrrr

            Kommentar


            • #21
              Richtig. Habe ich auch dann herausgefunden durch genau diese Vorgehensweise, die du beschreibst. Nur hatte ich in diesem Fall gehofft, dass jemand auf Anhieb sieht, dass eine Zeile vielleicht falsch positioniert oder eine andere Stelle mit wenig Aufwand korrigiert werden muss, um das Ganze lauffähig zu bekommen. Ist aber offenbar auch für euch Profis grade nicht ganz so einfach, denke ich. Nicht weiter schlimm - einen Versuch war es jedenfalls wert, mal hier zu fragen.

              Kommentar


              • #22
                Zitat von estebu Beitrag anzeigen
                (..) , dass eine Zeile vielleicht falsch positioniert oder eine andere Stelle mit wenig Aufwand korrigiert werden muss, um das Ganze lauffähig zu bekommen. Ist aber offenbar auch für euch Profis grade nicht ganz so einfach, denke ich. Nicht weiter schlimm - einen Versuch war es jedenfalls wert, mal hier zu fragen.
                steht in #2

                Kommentar


                • #23
                  ... und schon stehen alle Profis in der Schlange nur um dir zu beweisen, dass sie wirklich Profis sind.
                  Signaturrrrrrr

                  Kommentar


                  • #24
                    https://de.wikipedia.org/wiki/Profi

                    was ja letzlich nur heisst, dass TE jetzt mit Rechnugen zugehagelt wird

                    Kommentar


                    • #25
                      Was spricht dagegen, die Liste erstmal zu erstellen? Wenn die dann vollständig ist, kannst Du doch per querySelector für alle Listeneinträge auf einmal einen EventListener erstellen, oder?!

                      https://www.w3schools.com/jsref/met_...ryselector.asp
                      Es ist schon alles gesagt. Nur noch nicht von allen.

                      Kommentar


                      • #26
                        Sehe gerade, dass Du mit "nativem" Javascript querySelectorAll nutzen musst: https://www.w3schools.com/jsref/met_...electorall.asp

                        Sorry wegen der Konfusion, ich mache das nach wie vor mit jQuery, wo man bei der Methode nicht unterscheiden muss...
                        Es ist schon alles gesagt. Nur noch nicht von allen.

                        Kommentar


                        • #27
                          Das hat leider alles nichts gebracht, da var x bei jedem Durchlauf wieder überschrieben und (logischerweise) letztendlich immer nur die Daten des letzten Durchlaufes übrig bleiben. Ich habe jetzt eine fertige Bibliothek benutzt. http://easyautocomplete.com/
                          Danke für eure Hinweise.

                          Kommentar

                          Lädt...
                          X