2013-04-05 82 views
1

我不是javascript的专家,所以希望有人能帮助我。JavaScript比if语句不能正常工作更大

我有下面的代码,但由于某种原因它总是认为声明是真实的

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

错误消息确实显示出每一个种群的数量,并且正确地被通过。

回答

2

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

使用parseIntparseFloat

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

if (parseInt(delvQTY,10)>parseInt(orderQTY,10)) 
1

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

你需要分析你的价值观:

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

parseFloat

1

你需要确保delvQTYorderQTYNumber你可以做>比较前。

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

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

1

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

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

(假设你是处理整数,否则使用parseFloat)。

请注意10表示您正在处理基准10--如果没有它,如果有人键入前导零,那么您会得到令人费解的结果。