我不是javascript的专家,所以希望有人可以帮助我。
我有以下代码,但由于某种原因,它总是认为该陈述是真的
delvNum=document.getElementById("deliveryNum").value;
delvQTY=document.getElementById("delvQTY"+id).value;
orderQTY=document.getElementById("orderQTY"+id).value;
if (delvQTY>orderQTY)
{
alert("Can't deliver more than " + orderQTY + ", you are trying to deliver " + delvQTY + ". Please fix!");
document.getElementById("delvQTY"+id).focus();
return;
}
错误消息确实显示每个var的数量,并且正确传递。
答案 0 :(得分:2)
您正在比较字符串而不是数字。
if (parseFloat(delvQTY)>parseFloat(orderQTY))
或
if (parseInt(delvQTY,10)>parseInt(orderQTY,10))
答案 1 :(得分:1)
您正在进行字符串比较,而不是数字比较,例如,"9">"1111"
为true
。
您需要解析您的值:
if (parseFloat(delvQTY)>parseFloat(orderQTY))
请参阅parseFloat。
答案 2 :(得分:1)
在进行delvQTY
比较之前,您需要确保orderQTY
和Number
为>
。
var delvValue = parseInt(delvQTY, 10);
转换为整数。
或浮点数:var delvValue = parseFloat(delvQTY);
答案 3 :(得分:1)
您要比较字符串值,而不是数字值。你应该说:
delvNum = parseInt(document.getElementById("deliveryNum").value, 10);
(假设您正在处理整数,否则使用parseFloat
)。
请注意10
说你正在处理基数10 - 没有它,如果有人输入前导零,那么你会得到令人困惑的结果。