JavaScript: Preise aus mehreren Dropdown-Listen addieren?
Liebe*r Leser*in,
ich würde gerne in vier (4) Dropdown-Listen verschiedene Produkte mit teils verschiedenen Preisen auflisten. Je nach Auswahl soll dann eine Summe aus einem vorher festgelegtem Wert und zusätzlich die Summe aus jeweils einem Wert von jedem der vier Dropdown-Listen ausgegeben werden.
Also: Wert+Drop1+Drop2+Drop3+Drop4=Summe
Insgesamt habe ich 16 Produkte, die auf die Dropdown-Listen aufgeteilt sind, und einen Festwert, der als Startpunkt dient.
Mein Niveau ist als "totaler Anfänger" zu beschreiben. Daher bitte ich darum, nicht allzu viel vorauszusetzen. :)
Hier mal meine Zeilen:
<div class="auswahlliste">
<select id="produktliste1">
<option value="0.60">Produkt1 (0,60 €)</option>
<option value="0.60">Produkt2 (0,60 €)</option>
<option value="0.60">Produkt3 (0,60 €)</option>
<option value="0.50">Produkt4 (0,50 €)</option>
</select>
</div>
<div class="auswahlliste">
<select id="produktliste2">
<option value="1.10">Produkt1 (1,10 €)</option>
<option value="0.70">Produkt2 (0,70 €)</option>
<option value="0.65">Produkt3 (0,65 €)</option>
<option value="0.65">Produkt4 (0,65 €)</option>
<option value="0.60">Produkt5 (0,60 €)</option>
</select>
</div>
<div class="auswahlliste">
<select id="produktliste3">
<option value="0.95">Produkt1 (0,95 €)</option>
<option value="0.55">Produkt2 (0,55 €)</option>
<option value="0.25">Produkt3 (0,25 €)</option>
</select>
</div>
<div class="auswahlliste">
<select id="produktliste4">
<option value="0.60">Produkt1 (0,60 €)</option>
<option value="0.60">Produkt2 (0,60 €)</option>
<option value="0.60">Produkt3 (0,60 €)</option>
<option value="0.50">Produkt4 (0,50 €)</option>
</select>
</div>
Die Summe soll dabei immer automatisch als Text ausgegeben und bei veränderter Auswahl auch neu berechnet und angezeigt werden.
Ich würde mich sehr freuen, wenn mir jemand helfen möchte!
Beste Grüße
4n0nym3r
1 Antwort
Ist jetzt nicht der sauberste Code, nimm dir daran also kein Beispiel :D
https://jsfiddle.net/xke3zrs1/
// Die Funktion die bei einer Änderung der Auswahlliste aufgerufen wird
function summieren() {
// Alle Auswahl Elemente holen
var auswahllisten = document.getElementsByClassName("auswahl");
// Die Ergebnis Variable setzen mit dem Wert deiner Vorgabe
// "Number" ist hier erforderlich da JavaScript sonst mit Strings rechnet und diese concatiniert
var ergebnis = Number(document.getElementById("vorgabe").value);
// Die Auswahl Elemente durchlaufen
for (i = 0; i < auswahllisten.length; i++) {
// Den jeweils ausgewählten Wert auf das Ergebnis aufrechnen
ergebnis += Number(auswahllisten[i].value);
}
// Das Gesamtergebnis ausgeben
// "toFixed" rundet das Ergebnis, da JS aus (0,60 + 0,65 + 0,95 + 0,60) z.B 2.8000000000000003 macht
document.getElementById("ergebnis").innerHTML = ergebnis;
}
Mit Zeit kommt Übung. Selbst würde ich JQuery dafür nutzen. Macht alles deutlich einfacher zu lesen und weniger zu schreiben :)
Und kann ich den Startwert schon im Script festlegen, sodass dieser vorher nicht manuell eingegeben muss? Der Startwert ist immer derselbe (1,75 €).
Logisch, ersetze einfach das "document.getElementById("vorgabe").value" durch 1.75
Besteht die Möglichkeit, bei dem Endergebnis aus dem Punkt ein Komma machen zu lassen?
Natürlich. Wenn es Währung ausgegeben werden soll, dann damit:
document.getElementById("ergebnis").innerHTML = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(ergebnis);
de-DE steht für das Deutsche Format. "currency" für Währung und "EUR" logischerweise für die Art der Währung.
Hallo Gho5txx,
vielen Dank für diese unfassbar tolle Hilfe!
Ich hätte da noch ein paar Fragen:
Besteht die Möglichkeit, bei dem Endergebnis aus dem Punkt ein Komma machen zu lassen? Und kann ich den Startwert schon im Script festlegen, sodass dieser vorher nicht manuell eingegeben muss? Der Startwert ist immer derselbe (1,75 €).
Ich würde mich freuen, wenn das irgendwie funktioniert. :)
Beste Grüße
4n0nym3r