1

我不是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

4 回答 4

2

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

使用parseIntparseFloat

if (parseFloat(delvQTY)>parseFloat(orderQTY))

或者

if (parseInt(delvQTY,10)>parseInt(orderQTY,10))
于 2013-04-05T16:51:27.730 回答
1

您正在进行字符串比较,而不是数字比较,例如"9">"1111"is true

您需要解析您的值:

if (parseFloat(delvQTY)>parseFloat(orderQTY)) 

请参阅parseFloat

于 2013-04-05T16:51:19.807 回答
1

在进行比较之前,您需要确定delvQTYorderQTY是。Number>

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

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

于 2013-04-05T16:51:30.627 回答
1

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

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

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

请注意10说您正在处理以 10 为底的问题 - 没有它,如果有人键入前导零,那么您将得到令人困惑的结果。

于 2013-04-05T16:51:58.867 回答