javascript大于if语句无法正常工作

时间:2013-04-05 16:49:51

标签: javascript

我不是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的数量,并且正确传递。

4 个答案:

答案 0 :(得分:2)

您正在比较字符串而不是数字。

使用parseIntparseFloat

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比较之前,您需要确保orderQTYNumber>

var delvValue = parseInt(delvQTY, 10);转换为整数。

或浮点数:var delvValue = parseFloat(delvQTY);

答案 3 :(得分:1)

您要比较字符串值,而不是数字值。你应该说:

delvNum = parseInt(document.getElementById("deliveryNum").value, 10);

(假设您正在处理整数,否则使用parseFloat)。

请注意10说你正在处理基数10 - 没有它,如果有人输入前导零,那么你会得到令人困惑的结果。