Dann kannst Du den Zweig leer lassen.
Beiträge von Sempervivum
-
-
Ja, wenn Du mit der Überschrift etwas anderes machen willst, kann Du das so in der Schleife berücksichtigen:
Code
Alles anzeigennotenZeilen.forEach((zeile, index) => { // forEach liefert nicht nur das aktuelle Element selbst // auch seinen Index. if(index == 0) { // Es handelt sich um die erste Zeile mit der Überschrift. // Mach etwas damit oder ignoriere sie. } else { // Es handelt sich nicht um die Überschrift. // Zeile am Semikolon aufsplitten: const zeileSplitted=zeile.split(';'); // Ein Objekt mit Fach und Note an das Ergebnis-Array anhängen: notenArray.push({ fach: zeileSplitted[0], note: zeileSplitted[1] }); } });
-
Ich würde das so aufziehen, beachte meine Kommentare:
Code
Alles anzeigen// CSV-Text zum Testen bereit stellen: const noten = `Fach;Note Englisch;2 Mathe;4`, // In Zeilen aufsplitten:: notenZeilen = noten.split('\n'); // Leeres Array für das Ergebnis bereit stellen: let notenArray = []; // Alle Zeilen durchlaufen: notenZeilen.forEach(zeile => { // Zeile am Semikolon aufsplitten: const zeileSplitted=zeile.split(';'); // Ein Objekt mit Fach und Note an das Ergebnis-Array anhängen: notenArray.push({ fach: zeileSplitted[0], note: zeileSplitted[1] }); });
(Ungetestet)
-
So würde es gehen, aber unnötig kompliziert. Spalte die Zeilen ebenfalls mit split in die Felder auf. Und Du willst ja sicher alle Zeilen auswerten, dazu durchläufst Du am besten die Variable Lines mit forEach.
-
Hallo Unity21X und willkommen im Forum!
Ich denke, slice wird dir dabei weniger helfen, weil Du dafür entweder ein Array brauchst oder die genaue Länge der Elemente.
Eher schon mit split(), indem Du jede Zeile am Trennzeichen in ein Array aufspaltest.
Am besten aber mit einer ausgewachsenen Bibliothek:
Papa Parse - Powerful CSV Parser for JavaScript
Die hilft dir auch gleich, die Datei einzulesen und vermeidet Probleme, falls das Trennzeichen im Text selber auftritt. -
Das kommt daher, dass ein anderes Hobby von mir der Garten ist und ich dabei eine besondere Vorliebe für die Sukkulenten habe. Allerdings ist Fantasie nicht meine Stärke und ich muss zugeben, dass ich dieses Pseudonym von jemand anders abgeguckt habe
-
Na, spricht alles dafür, dass der Beitrag von Frosteule nur ein getarntes Link-Placement ist.
-
Hallo domeetr , willkommen zurück!
Hier hilft eine Erinnerung an die Schulzeit: v=s/t Die Geschwindigkeit v soll konstant sein, der Weg s ist die Breite des Elementes, das bewegt wird. Und die Zeit t ist zu ermitteln. Umgestellt t=s/v d. h. Du dividierst die Breite des Elementes, diese kannst Du durch getBoundingClientRect() ermitteln, durch eine Konstante. Auf die Weise erhältst Du die Zeit bzw. die Dauer der Animation.
-
Etwas mehr als ein, zwei Zeilen Code sind es schon. Ersetze das Javascript durch dieses und versuche anhand meiner Kommentare zu verstehen, wie es funktioniert:
Code
Alles anzeigen<script> const // Tabellenzeilen bereit stellen: rows = document.querySelectorAll('table tr'), // Eingegebene Wert aus dem Localstorage lesen: valuesJson = localStorage.getItem('values'); //Waren schon Werte im Localstorage? if (valuesJson) { const values = JSON.parse(valuesJson); // Über alle Tabellenzeilen: for (let i = 0; i < rows.length; i++) { // Den Wert aus dem Localstorage in das Eingabefeld eintragen: rows[i].querySelector('td.eingabe input').value = values[i]; // Ergebnis berechnen und in Tabellenzelle eintragen: const faktor = rows[i].querySelector('td.faktor').textContent, ausgabe = rows[i].querySelector('td.ausgabe'), ergebnis = values[i] * faktor; ausgabe.textContent = ergebnis; } } // Eventlistener für input-Event irgendwo auf der // Seite registrieren: document.addEventListener('input', event => { // Handelt es sich um das Eingabefeld in der Tabelle? if (event.target.matches('td.eingabe input')) { const // Ausgehend vom Eingabefeld die Zeile // in der Tabelle ermitteln: row = event.target.closest('tr'), // Den Faktor ermitteln: faktor = row.querySelector('td.faktor').textContent, // Die Tabellenzelle für die Ausgabe ermitteln: ausgabe = row.querySelector('td.ausgabe'), // Den eingegebenen Wert bereit stellen: eingabe = event.target.value, // Das Ergebnis berechnen: ergebnis = eingabe * faktor; // Das Ergebnis in die Tabellenzelle eintragen: ausgabe.textContent = ergebnis; // Ein Array mit den Eingaben bereit stellen: const values = []; // Über alle Tabellenzeilen: rows.forEach(row => { // Den eingegebenen Wert in das Array eintragen: const eingabe = row.querySelector('td.eingabe input').value; values.push(eingabe); // Und das Array im Localstorage speichern: localStorage.setItem('values', JSON.stringify(values)); }); } }); </script>
-
Du kannst die eingegebenen Zahlen im Localstorage speichern siehe hier:
-
So etwas ist eine Standardaufgabe, die relativ häufig vorkommt.
Statte deine Tabelle so mit Klassen aus:
Code
Alles anzeigen<tr> <td class="faktor">1</td> <td class="eingabe"><input></td> <td class="ausgabe"></td> </tr> <tr> <td class="faktor">2</td> <td class="eingabe"><input></td> <td class="ausgabe"></td> </tr> <tr> <td class="faktor">3</td> <td class="eingabe"><input></td> <td class="ausgabe"></td> </tr>
Und setze dieses Javascript an das Ende des Body, vor das schließende </body>:
Code
Alles anzeigen<script> // Eventlistener für input-Event irgendwo auf der // Seite registrieren: document.addEventListener('input', event => { // Handelt es sich um das Eingabefeld in der Tabelle? if (event.target.matches('td.eingabe input')) { const // Ausgehend vom Eingabefeld die Zeile // in der Tabelle ermitteln: row = event.target.closest('tr'), // Den Faktor ermitteln: faktor = row.querySelector('td.faktor').textContent, // Die Tabellenzelle für die Ausgabe ermitteln: ausgabe = row.querySelector('td.ausgabe'), // Den eingegebenen Wert bereit stellen: eingabe = event.target.value, // Das Ergebnis berechnen: ergebnis = eingabe * faktor; // Das Ergebnis in die Tabellenzelle eintragen: ausgabe.textContent = ergebnis; } }); </script>
-
Wenn es ganz etwas anderes ist, dann mach besser einen neuen Thread auf.
-
Gern, in meinem Posting #5 sind ja schon script-Tags drum herum. Das an das Ende des body, vor das schließende </body> stellen. Das pattern in dem <input> brauchst Du dann nicht.
-
Ich bin bei meinem Vorschlag von dem aus gegangen, was unter deinem Link zu sehen war. D. h. das Eingabefeld muss die ID "inputField" und das Pattern haben.
Das CSS dann in style-Tags und in den Head-Bereich stellen:
Code<style> input#inputField { outline: none; } input#inputField:invalid { border: 2px solid red; } </style>
Siehe auch hier:
CSS/Tutorials/Einstieg/Stylesheets einbinden – SELFHTML-Wiki
-
Möglicher Weise hilft es schon weiter, wenn Du mit der Pseudoklasse :invalid das Eingabefeld rot markierst:
Oder, wenn Du den Benutzer ganz an einer ungültigen Eingabe hindern willst, mit Javascript, dann sind die Bedingungen ohnehin besser lesbar und klarer:
Code
Alles anzeigen<script> document.getElementById('inputField').addEventListener('input', event => { const input = event.target, val = input.value; // Prüfen ob eine gültige Eingabe vorliegt: if (val == '' || parseInt(val) >= 1 && parseInt(val) <= 157 || val == 'M') { // Die Eingabe ist gültig, wir speichern den Wert: input.dataset.validValue = val; } else { // Die Eingabe ist ungültig, wir setzen die Eingabe // auf den letzten gültigen Wert zurück: input.value = input.dataset.validValue; } }); </script>
-
Warum bestehst Du denn darauf, das mit Bootstrap zu machen? An den ausbleibenden Antworten erkennst Du ja, dass niemand Interesse daran hat.
Und bei deiner vorigen Frage hast Du gesehen, dass die Aufgabe mit wenigen Zeilen CSS zu lösen war, ohne eine Inflation an Container wie man es von Bootstrap kennt.
Bootstrap war vor 10, 15 Jahren eine gute Sache aber heute veraltet und überflüssig.
Siehe auch hier:
-
-
Kernproblem: Um fest zu stellen ob 3x falsch geraten wurde, musst Du den Schleifenzähler count abfragen, nicht den String.
Ich bin der Meinung, dass die Arbeit mit break und continue nur Verwirrung stiftet, klarer wird es, wenn man verschachtelte if-Abfragen verwendet:
Code
Alles anzeigen<script> function schreibwas() { var count = 1; var antwort1 = "Laika"; var antwort2 = "Juri Gagarin"; // antwort3 ist keine Antwort sondern eine Meldung an den Benutzer // var antwort3 = "3x falsch"; do { var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:", ""); if (eingabe == antwort2) { alert("Fast richtig, Sie dürfen noch einmal raten"); // Der Benutzer darf noch ein Mal raten } else if (eingabe == antwort1) { alert("Das ist richtig"); // Richtige Antwort, durch die Bedingung am Schleifenende wird // die Schleife verlassen werden } else // Wenn wir an dieser Stelle ankommen, wurde falsch geraten. // Prüfen, ob es schon der letzte Versuch war: if (count >= 3) { document.getElementById("ergebnis").innerHTML = "3x falsch"; } else { document.getElementById("ergebnis").innerHTML = "Falsch, Sie dürfen noch einmal raten"; } count++; } while (eingabe != antwort1 && count <= 3) } </script>
(ungetestet)
-
-
Da ist eine schließende geschweifte Klammer fehl am Platze:
Codedo { var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:", ""); } // Die schließende Klammer ist hier fehl am Platze if (eingabe == antwort2) {
Lösche ich sie ist der Code zumindest frei von Syntaxfehlern. Rückt man den Code sinnvoll ein, sieht man schnell, dass da etwas nicht stimmt.
Benutze bitte Code-Tags wenn Du Code postest, das </> in der Werkzeugleist oben.