私は電子商取引のようなウェブページを作成しようとしています(実習用)。ボタンのどれかをクリックするとカートの値が入力要素 これまでは、最初のフォームからのみカートを更新できました。ループを使用してすべてのフォームに関数を割り当てようとすると、ミリ秒のカート更新がゼロに戻ります。私はその範囲のためにそれを仮定する。 私はこれを行うための簡単な方法は、手動ですべてのdocument.forms[n]
JS - 同じ機能を多くのhtmlフォームに貼り付けてください
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 カートのために機能を割り当てずあります知っている:
<div class="basket">
<p><i class="fa fa-shopping-basket"></i></p>
<p id="item-count">0</p>
</div>
HTMLフォーム:簡潔にするために、私は1つのフォームの例を掲載していますが、実際には、私はまったく同じ6つの他の形式を持っています。
<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>
ありがとうございました!できます!質問 - '[0]'は 'var getInput = this.getElementsByClassName(" num-item ")[0] .value;'の中で何を意味していますか?現在のインデックスではないと仮定します。そうでなければ、 'i'を使用します。その行は何をしていますか? – Charisse
@Charisse 'getElementsByClassName' *常に*同じクラスを持つ複数の要素を持つことが許されているので、コレクションには1つの項目しかない場合でも、要素のコレクションを返します。コレクション全体の 'value'プロパティーを読むことはできません - その代わりに、コレクションの最初の要素を取るか、または正しい要素を取得するための他のメソッドを見つけて、' value'プロパティーを取得する必要がありますその特定の要素の –