Am einfachsten: URL https://code.jquery.com/jquery-1.12.4.js im Browser öffnen, dann wird das Javascript angezeigt. Dann mit "Seite - Speichern unter" o. ä., je nach Browser, speichern.
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:
Codefunction 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.
-
Mit einer Tabelle wäre es sicher möglich, wenn man spanning für den inneren Bereich nehmen würde, aber sematisch sicher verfehlt.
Ich habe hier mal etwas mit Flexbox ausgearbeitet. Etwas kompliziert vom CSS her, aber eine bessere Lösung fiel mir nicht ein.
Möglicher Weise mit Bootstrap, aber damit habe ich mich noch nicht beschäftigt.
-
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:
Code
Alles anzeigenfunction init() { allBirds.classList.remove("hidden"); var obj = JSON.parse(listOfBirds); console.log(obj); var templ = document.getElementById("bird-list-entry").innerHTML; var thehtml = ""; for (var i = 0; i < obj.length; i++) { 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; } -
-
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:
Codevar 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; -
Was ist dir denn unklar? In Posting #2, der zweite Codeblock, ist angeben, wie Du des Text eines Templates ausliest. Dann brauchst Du ihn zunächst nur mit replace() zu überarbeiten. Dann mit innerHTML in die bird-list einfügen.
-
-
Was ist denn das für Template? Für ein CMS? Oder ist es selbst gemacht nur für diese Aufgabe?
-
Ja, das ist richtig. Aber hier erzeugt er ja das Element gerade neu und es kann noch keine andere Klasse vorhanden sein.
-
-
-
In deinem CSS beziehst Du dich auf die Klasse .bird-image. Dann musst Du beim Anlegen des Elementes diesem auch diese Klasse zuweisen.
-
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.
-
Soll die Liste im Browser hinterher so aussehen wie in aufgabe.jpg? Dann brauchst Du in jedem Listenelement das Bild, den deutschen und den lateinischen Namen und das "+"-Symbol.
Und in dem CSS in posting #14 vermisse ich das Bild.
-
Es wäre nicht verkehrt, wenn man das mal vollständig online und in Aktion sehen könnte. Ist es öffentlich und kannst Du die URL posten?
-
-
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:
Code
Alles anzeigen// Wir setzen zunächst den Text auf den Maximalwert um die // benötigte Groesse berechnen zu können: text: Eigenschaften.templateText.replace("{value}", max).replace("{remaining}", max) }); // Dann berechnen wir die Groesse: yBar = pos + balkenID.measureText('text').height / 2 - Eigenschaften.barHeight / 2; if (Eigenschaften.textPos == "left") { var xBar = pos + balkenID.measureText('text').width + 35, xText = pos; } else { var xBar = pos, xText = pos + Eigenschaften.barWidth + 10; } var width = pos + balkenID.measureText('text').width + 10 + Eigenschaften.barWidth + pos; balkenID.attr("width", width); balkenID.attr("height", height); balkenID.setLayer('text', { // Und jetzt setzen wir den Text auf den aktuellen Wert entspr. value text: getText(value, max, Eigenschaften),