Ich versuche eine E-Commerce-ähnliche Webseite zu erstellen (für die Praxis), bei der ein Klick auf eine der Schaltflächen den Einkaufswagenwert um die angegebene Anzahl (Menge) aktualisiert das Eingabeelement Bisher konnte ich den Einkaufswagen nur vom ersten Formular aus aktualisieren, denn wenn ich versuche, die Funktion auf jedem Formular mit einer Schleife zuzuweisen, wird der Warenkorb eine Millisekunde lang aktualisiert und dann auf Null zurückgesetzt. Ich nehme es wegen des Umfangs an. Ich weiß, es ist ein einfacher Weg, dies zu tun, ohne manuell die Funktion für jeden document.forms[n]
JS - An viele HTML-Formulare die gleiche Funktion anhängen
JS
window.onload = function()
{
var getForm = document.forms[0];
var numItems = 0;
getForm.onsubmit = function(event)
{
event.preventDefault();
var getInput = getForm.elements["num-item"].value;
if(parseInt(getInput))
{
numItems = numItems + parseInt(getInput);
var getCart = document.getElementById("item-count");
getCart.innerHTML = numItems;
getForm.reset();
}
else
{
alert("Please enter a valid number");
}
}
HTML Wagen zuweisen:
<div class="basket">
<p><i class="fa fa-shopping-basket"></i></p>
<p id="item-count">0</p>
</div>
HTML Form: Der Kürze halber poste ich nur 1 Formbeispiel, aber in Wirklichkeit Ich habe 6 andere Formen, die genau gleich sind.
<div class="buy-config">
<form class="buy-form" name="buy-form">
<label>Quantity:</label>
<input type="text" class="num-item" />
<button class="buy-btn">Add to Cart</button>
</form>
</div>
Vielen Dank! Es klappt! Frage - Was bedeutet "[0]" in 'var getInput = this.getElementsByClassName (" num-item ") [0] .value;'? Ich nehme an, es ist nicht der aktuelle Index, sonst hätten Sie 'i' benutzt. Was macht diese Linie genau? – Charisse
@Charisse 'getElementsByClassName' * always * gibt eine Sammlung von Elementen zurück, auch wenn diese Sammlung nur ein Element enthält (da Sie mehrere Elemente mit derselben Klasse haben dürfen). Sie können die 'value' -Eigenschaft einer ganzen Sammlung nicht lesen. Stattdessen müssen Sie nur das erste Element der Sammlung verwenden (oder eine andere Methode finden, um sicherzustellen, dass Sie das richtige Element erhalten) und die' value' -Eigenschaft erhalten von diesem spezifischen Element. –