如果一位以上的错误小于另一个值,则Javascript会添加到值中

如果一位以上的错误小于另一个值,则Javascript会添加到值中,javascript,forms,math,Javascript,Forms,Math,我有一个javascript函数,如果当前值小于另一个值,它会将一个值添加到数量中。下面是javascript函数: function addQty() { if(document.getElementById("quantity").value < document.getElementById("stock").value) document.getElementById("quantity").value++; else return;

我有一个javascript函数,如果当前值小于另一个值,它会将一个值添加到数量中。下面是javascript函数:

function addQty()
{
    if(document.getElementById("quantity").value < document.getElementById("stock").value)
        document.getElementById("quantity").value++;
    else
        return;
}
函数addQty()
{
if(document.getElementById(“数量”)值
以下是取值的表单元素:

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


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

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

一个
的“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;
}
函数addQty()
{
var qtynp=document.getElementById('quantity'),
qty=parseInt(QTYNP.value,10),
stk=parseInt(document.getElementById('stock')。值,10);
如果(数量一个
的“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;
}
函数addQty()
{
var qtynp=document.getElementById('quantity'),
qty=parseInt(QTYNP.value,10),
stk=parseInt(document.getElementById('stock')。值,10);
如果(数量
您可以使用
Math.min()
实现此目的

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

    quantity.value = Math.min(+quantity.value + 1, 
                              document.getElementById("stock").value);
}
这很清楚地表明,您想要的是增加的数量或库存总量中的较小者。

为此,您可以使用
Math.min()

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

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


这非常清楚,您想要的是增加的数量或库存总量中的较小者。

1*document.getElementById(“数量”).value<1*document.getElementById(“库存”).value
谢谢Rob-这很好用!请随意输入这个作为问题的答案,否则我会在一段时间内提出这个问题,如果你没有。Cheers如果您对输入元素使用type='number',javascript引擎应该正确处理它,但是为了安全起见,最好使用parseInt()。还应该执行一些错误检查,例如,如果用户输入一个字母,则将其更改为NothingHanks dano-我已经获得了由+和-图像控制的数量,用户可以单击并使文本字段为只读,以防止出现任何错误
1*document.getElementById(“数量”).value<1*document.getElementById(“库存”).value
谢谢Rob-这很好用!请随意输入这个作为问题的答案,否则我会在一段时间内提出这个问题,如果你没有。Cheers如果您对输入元素使用type='number',javascript引擎应该正确处理它,但是为了安全起见,最好使用parseInt()。还应该执行一些错误检查,例如,如果用户输入一封信,将其更改为Nothings Hanks dano-我的数量由用户可以单击的+和-图像控制,并已将文本字段设置为只读,以防止出现任何错误。这绝对是一个有用的信息-谢谢Dave。这也解决了问题。从这个解决方案和上面罗布的方案的比较来看,这是一个更好的解决方案,还是和另一个一样好?@CaptainChod,这是相同的区别;我更喜欢显式转换,而不仅仅是在字符串上做数学运算——我认为这更容易沟通。不过,这只是一个意见问题;我不确定这是否有意义。另一个选项是@amnotiam的一元
+
运算符,它比乘法更简洁。是的,我只是把它放在两种方式中,让它们彼此相邻,这样看起来更整洁。这绝对是一个有用的信息-谢谢戴夫。这也解决了问题。从这个解决方案和上面罗布的方案的比较来看,这是一个更好的解决方案,还是和另一个一样好?@CaptainChod,这是相同的区别;我更喜欢显式转换,而不仅仅是在字符串上做数学运算——我认为这更容易沟通。不过,这只是一个意见问题;我不确定这是否有意义。另一个选项是@amnotiam的一元
+
运算符,它比乘法更简洁。是的,我只是把它放在两种方式中,让它们彼此相邻,这样看起来更整洁。干杯,伟大的解决方案。需要注意的一点是:根据我的测试,parseFloat的速度稍微快了一点:感谢Pointy-Dave刚刚在这方面击败了你!再说一遍,这是一个比罗布(作为对问题的评论提交)更好的解决方案,还是一个和另一个一样好?@CaptainChod,无论哪种方式都可以;实际上,这可能更好,因为
parseInt()
,虽然“更漂亮”可能是一个愚蠢的API,它接受以数字开头、以垃圾结尾的数字字符串。这是一个很好的解决方案。需要注意的一点是:根据我的测试,parseFloat的速度稍微快了一点:感谢Pointy-Dave刚刚在这方面击败了你!再说一遍,这是一个比罗布(作为对问题的评论提交)更好的解决方案,还是一个和另一个一样好?@CaptainChod,无论哪种方式都可以;实际上,这可能更好,因为
parseInt()
,虽然“更漂亮”可能是一个愚蠢的API,它接受以数字开头、以垃圾结尾的数字字符串。