0

現在の値が別の値よりも小さい場合に数量に1を追加するjavascript関数があります。javascript関数は次のとおりです。

function addQty()
{
    if(document.getElementById("quantity").value < document.getElementById("stock").value)
        document.getElementById("quantity").value++;
    else
        return;
}

そして、値が取得されるフォーム要素は次のとおりです。

<input type='text' id="quantity" name='quantity' value ='0' />
<input type='hidden' id="stock" name="stock" value="<?php echo $adjustedStock; ?>" />

したがって、基本的にユーザーは、在庫が十分にある場合にのみ、注文する製品の数量に1を追加できます。

これで、在庫数が1〜9の場合は問題なく機能しますが、在庫レベルが2桁の場合、ユーザーがバスケットに追加できる最大値(つまり、コードの「数量」)が最初の桁として返されます。 + 1.したがって、在庫が13の場合、最大数量は2です。在庫が63の場合、最大数量は7です。

$ AdjustedStockの整数値を文字列に変換してから、フォームで使用しようとしました。この状況では、ブラウザがおかしな動作をすることがありますが、これは機能しませんでした。なぜこれが起こっているのか考えはありますか?

前もって感謝します!

4

3 に答える 3

3

anの「value」属性<input>は常に文字列です。したがって、2つの文字列間で比較が行われていますが、これは必要なことではありません。

比較する前に、値を数値に変換します。

function addQty()
{
    var qtyInp = document.getElementById('quantity'),
      qty = parseInt(qtyInp.value, 10),
      stk = parseInt(document.getElementById('stock').value, 10);

    if (qty < stk)
        qtyInp.value = qty + 1;
}
于 2012-07-05T16:37:15.520 に答える
2

フォーム要素の値は文字列です。parseInt他の方法で数値を使用または変換します。

于 2012-07-05T16:35:17.493 に答える
1

Math.min()この目的に使用できます...

function addQty() {
    var quantity = document.getElementById("quantity");

    quantity.value = Math.min(+quantity.value + 1, 
                              document.getElementById("stock").value);
}

これにより、増分数量または在庫の合計のいずれか少ない方が必要であることが非常に明確になります。

于 2012-07-05T16:45:41.723 に答える