Beiträge von Sempervivum

    Oh, das tut mir Leid! Ich wollte dich nicht angreifen. Hatte vermutet, dass das ein Muster ist, das von der Aufgabe vorgegeben wurde. Weil Du in anderem Zusammenhang mal geschrieben hattest, dass Du etwas nicht anwenden kannst, weil die Aufgabe es anders verlangt.

    Das Problem scheint mir hier zu sein:

    Diese Funktion wird jedes Mal aufgerufen, wenn sich im Eingabefeld etwas ändert. Und jedes Mal wird der Eventlistener mit addNewBird hinzugefügt. Du darfst diesen Listener nur einmal hinzu fügen, wenn Du die Liste anlegst.

    Zitat

    drauf clicken und diesen Element auf ein List hinzufügen.

    Suchfunktion funktioniert. Wo drauf klicken? Auf das + Zeichen oder das ganze Feld?

    Und in welcher JS-Datei findet man den Code, den Du oben gepostet hast?

    Zitat

    das Problem jetzt ist dass beim zweiten Auswahl 2 Elemente auf die liste hinzugefügt werden und beim dritten dann 3 usw.

    Das liegt daran, dass Du jedes Mal ein Element zu birdChose hinzu fügst:

    Code
    birdChose += list.replace("<%= latinName %>", latinName)

    Wenn Du das Plus weg nimmst, sollte es funktionieren:

    Code
    birdChose = list.replace("<%= latinName %>", latinName)

    Ich habe mal das Problem auf das wesentliche reduziert und in eine Testseite eingefügthtml-seminar.de/woltlab/attachment/1349/

    So sieht die Ansicht im HTML-Inspektor aus. Man erkennt, dass das n1 nicht von Hochkommas eingeschlossen ist. Daher interpretiert Javascript es als Variable, die es nicht findet. Ändert man es so:

    Code
    AuswahlFeld.innerHTML = "<p onclick='ClosePopUp(\"AuswahlFeldHintergrund\")'>X</p><form method='post' action='test.php' >" + content + "</br></br><button onclick='AddRadioValueTOCheckbox(\"" + feld + "\"," + RadioValue + ")' name='submitAuswahlFeld' type='button'>OK</button><form></br>";

    funktioniert es.

    Einige der anderen Punkte, die Basti genannt hat, sind mir auch aufgefallen.

    Ja, ich denke, mit deiner Vermutung liegst Du richtig. Lösung indem Du für das geklonte Eingabefeld ebenfalls den Datepicker initialisierst:

    Code
    function addbase() {
        var elmnt = document.getElementsByClassName("input")[a];
        var cln = elmnt.cloneNode(true);
        var zuf = document.getElementsByClassName("inhalt")[0];
        zuf.appendChild(cln);
        $(cln).datepicker();
        var btn = elmnt.getElementsByTagName("DIV")[4];

    Immer voraus gesetzt, dass Du den Datepicker von jQuery-UI verwendest.

    Nein, replace ist schon richtig. Auf die Namen hatte ich jetzt nicht so geachtet und sie stimmen noch nicht. Außerdem ist bei den ersten replace eine Klammer zu viel. Und das += funktioniert nicht für das innerHTML. Dieses funktioniert bei mir:

    Wie man globale Variablen vermeidet, wird z. B. hier beschrieben:

    https://stackoverflow.com/questions/1841…s-in-javascript

    Eine Möglichkeit, die ich selber gern anwende ist, die Werte in data-Attributen zu speichern, z. B. so bei den Clicks:

    Code
                    //clicks = 0;
                    
                    document.getElementById("score").innerHTML = 0;
                    document.getElementById("score").setAttribute("data-clicks", 0);
                    document.getElementById("endscore").innerHTML = 0;
    
    // und im weiteren Verlauf:
    document.getElementById("score").setAttribute("data-clicks", parseInt(document.getElementById("score").getAttribute("data-clicks")) + 1);

    Hier bietet es sich sofort an, das Element #score nur einmal zu ermitteln, aber dann muss man Obacht geben, dass man nicht wieder eine globale Variabel erzeugt.

    Ah so. Jetzt hast Du ja das HTML und brauchst die Elemente nicht mehr mit Javascript anzulegen. Jetzt müsste es also etwa so aussehen:

    Code
    var templ = document.getElementById("bird-list-entry");
    for(var i =0; i< obj.length; i++){
        var thehtml = templ.replace(("<%= latinName %>", obj[i].latinname)
                           .replace("<%= name %>", obj[i].name)
                           .replace("<%= imagePath %>", obj[i].imagepath); // evtl. weitere Ersetzungen
    }
    document.querySelector(".bird-list").innerHTML += thehtml;