Beiträge von Sempervivum

    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;

    Ich empfehle, jeweils ein p-Element für die Namen zu verwenden, dann werden sie automatisch untereinander angeordnet. Wenn Du innerHTML verwendest, um den Text einzutragen, kannst Du auf die Verwendung von textNode verzichten:

    Code
    name = document.createElement("p");
    name.innerHTML = obj[i].name;
    Zitat

    Der schwarze rand ist ja der border von der tabelle.Meines wissens läst sich da nicht rein schreiben.

    Man müsste die Tabelle etwas umbauen und das anders Regeln.

    In meinen Augen etwas unlogisch, dass die Caption der Tabelle nicht innerhalb des Rahmens angezeigt wird. Ich schlage vor, einen Wrapper um die Tabelle zu legen und diesem den Rahmen zu geben.

    Wüsste nicht, dass man die Geschwindigkeit auslesen könnte. Lädt man eine Datei über Ajax, kann man den Fortschritt ermitteln und anzeigen. Habe ich früher mal programmiert. IMO wäre dann aber das Verhältnis zwischen Aufwand und Nutzen nicht verhältnismäßig. Außerdem handelt es sich teilweise um MJPEG-Streams und ich bezweifle, dass man die mit Ajax laden kann.

    Auch das verstehe ich nicht richtig, ohne das Umfeld zu sehen. Der Parameter value ist der Wert, der aktuell angezeigt werden soll. max ist der Maximalwert, der auftreten kann. Der Maximalwert wird beim Start nur temporär eingesetzt, um die Größe berechnen zu können, sofort anschließend wird er durch value ersetzt:

    Ich würde ja eher eine Galerie empfehlen, die durch Klick bedient wird, damit sie auch auf Touch-Geräten funktioniert. Diese habe ich früher mal gemacht:

    Edit: Ich sehe, dass die Galerie von Gipspferd das auch realisiert, mit :focus. Nehme alles zurück.