如果小于另一个值,则 Javascript 将添加到值,错误超过一位数

Javascript add to value if smaller than another value error for more than one digit

本文关键字:一位 另一个 小于 Javascript 如果 添加 错误      更新时间:2023-09-26

我有一个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-9,这绝对可以正常工作,但如果库存水平为两位数,则用户可以添加到购物篮中的最大值(即代码中的"数量")返回为第一个数字 + 1。因此,如果库存为 13,则最大数量为 2,或者如果库存为 63,则最大数量为 7。

我尝试将 $adjustedStock 的整数值转换为字符串,然后再将其用于表单,因为我读到有时浏览器在这种情况下会表现得很奇怪,但这不起作用。知道为什么会这样吗?

提前感谢!

<input>的"value"属性始终是一个字符串。因此,您的比较是在两个字符串之间进行的,这不是您想要的。

在比较之前将值转换为数字:

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;
}

表单元素值是字符串。使用parseInt或以其他方式转换为数字。

您可以使用

Math.min()来实现此目的...

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

这非常清楚地表明,您希望增加的数量或库存总额中的较小者。

相关文章: