Ankündigung

Einklappen
Keine Ankündigung bisher.

javascript: EIN alert nach for-Schleife

Einklappen

Neue Werbung 2019

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

  • javascript: EIN alert nach for-Schleife

    Ich erzeuge per javascript dynamisch eine liste von Checkboxen. Wenn diese angewählt werden und ein Button angeklickt wird,
    möchte ich, dass EIN Alert erscheint mit "Sie haben die Auswahl getroffen x,y".

    Das Auswahlmenü erzeuge ich wie folgt:
    Code:
    function liste(){
    
                tx.innerHTML = "";
                bu.innerHTML = "";
    
                if(sel.value == "23.70"){
                    be.innerHTML = "Das ist ein gutes Release";
                    for(var i=0; i<=2;i++){
                        tx.innerHTML += "<input type='checkbox'>" + set[i] + "<br>";
                    }
                bu.innerHTML = "<input type='button' id='idButton' name='senden' value='Paket erstellen und herunterladen'>";    
                }
    }
    Per Click auf den Button wird dann folgende Funktion aufgerufen (per EventListener):
    Code:
    function download(){
                var pf = "";
                var check = document.getElementsByTagName("input");
                for(var i=0; i<=4; i++){    
                    if(check[i].checked === true && sel.value == "23.60"){
                        pf += set[i+1];
                    }
                    if(check[i].checked === true && sel.value == "23.50"){
                        pf += set[i+2];
                    }
                    if(check[i].checked === true && sel.value == "23.70"){
                        pf += set[i];
                    }                    
                }    
                alert(pf);
            }
    Ich verstehe einfach nicht, warum hier gar kein alert erscheint.

    Wenn ich den Alert direkt unter das 'if' packe, erscheinen so viele Alert, wie ich checkboxen angehakt habe. - seh' ich ein.
    Code:
    if(check[i].checked === true && sel.value == "23.70"){
                        pf += set[i];
                        alert(pf);
                    }
    Wenn ich den Alert in die for-Schleife packe, erscheinen so viele Alerts, wie Durchläufe durch die Schleife. Auch
    das macht noch Sinn.
    Code:
    if(check[i].checked === true && sel.value == "23.70"){
                        pf += set[i];
                    }                
                alert(pf);            
                }    
            }
    Wenn ich den Alert aber unter die for-Schleife, aber noch innerhalb der Funktion setze, erscheint gar kein Alert. Also
    nicht mal wenn ich's mit alert("Hallo"); versuche.

    Das verstehe ich nicht. Wie die anderen Versuche zeigen, scheint die Schleife ja ok zu sein. Sie kommt auch zum Ende.

    Warum erscheint dann gar kein alert?

    Danke!!


  • #2
    Hast Du mal in die Konsole geschaut?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      hm .. gut Hinweis! (Ich bin übrigens blutiger Anfänger!). Dort findet sich ein Type Error: check[i] is undefined.

      Versteh' ich aber auch nicht. "i" kommt aus der Schleife und "check" wird explizit defniert. Und es klappt ja auch in den anderen Varianten. Nur halt nicht so, wie ich will.

      Kommentar


      • #4
        Wie sieht denn Deine Listener-Zuweisung aus?
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Code:
          var bu = document.getElementById("idSpan");
          bu.addEventListener("click", download, false);
          Grundsätzlich scheint die ja zu funktionieren.

          Kommentar


          • #6
            erzeugst Du nun 3 oder 5 checkboxen?

            Kommentar


            • #7
              3 von 5 möglichen. Heißt: ich habe ein Array mit 5 Elementen. Über die for-Schleife wird die Zuordnung getroffen. Diese lasse ich in Abhängigkeit der Auswahl aus einem Dropdown Menü bei 0, 1 oder 2 beginnen und entsprechend ändern. Heißt: de facto sind es bei 3 Auswahlmöglichkeiten (Dropdon) je 3 checkboxen.

              Kommentar


              • #8
                Wenn ich das richtig interpretiere werden also immer nur 3 Checkboxen angezeigt aber 5 in der Funktion Download abgefragt.

                Kommentar


                • #9
                  ja. stimmt. Ist das ein Problem? Die Zuordnung ist doch trotzdem eindeutig. Nämlich durch die ZUordnung der checkboxen durch set[i+1], bzw. set[i+2]. Jedenfalls werden mir in den anderen Versionen die richtigen Array Elemente angezeigt. Nur halt: pro Element 1 alert. Und das will ich ja eben nicht.

                  Kommentar


                  • #10
                    Du fragst in der Funktion Download 5 Checkboxen ab obwohl nur 3 vorhanden sind, daher auch die Fehlermeldung check[i] undefined.

                    Evtl. baust Du uns mal ein fiddle...

                    Kommentar


                    • #11
                      hm ... das scheint plausibel, danke! Aber wie soll ich das sonst machen? Ich habe 3 Releases; in jedem Release sind unterschiedliche (bzw. unterschiedlich viele) Produkte. Entsprechend bekommt der Besucher je nach Auswahl des Releases verschiedene (verschieden viele) Produkte zur Auswahl. Wenn er diese ausgewählt hat, soll er eine Bestätigung über seine Auswahl erhalten.

                      ich wusste mir da nicht anders zu helfen.

                      Kommentar


                      • #12
                        Benutze anstatt der 4 ein check.length-1

                        Kommentar


                        • #13
                          super! - vielen Dank!

                          Kommentar

                          Lädt...
                          X