2012-12-06 93 views
2

这是我的小调试警报。几乎把我的显示器扔出窗外。 仅查看突出显示的代码。在地球上的什么条件下可以像这样触发这种警报? - http://i.stack.imgur.com/nrf1x.png我疯了还是jsFiddle越野车?

这里到处是小提琴,但我不认为这是很重要的:http://jsfiddle.net/Timson/QqVrF/8/

if (currLoad > maxload){ 
    alert("I am dumbass, I think that "+currLoad+' is more than '+maxload); 
} 
+0

当我按下小提琴上的按钮,我没有得到那个错误?我是不是该?你可以减少你的代码,直到你停止它的发生,然后再建立它,直到它恢复为止? –

+0

我无法阅读任何语言,您是否可以提供重建和/或将问题简化为最简单形式的步骤? – jbabey

回答

4

是否有可能的变量都是字符串?在JavaScript控制台:

6 > 1000 
    false 

"6" > "1000" 
    true 
0

尝试:

if (parseInt(currLoad) > parseInt(maxload)){ 
      alert("I am dumbass, I think that "+currLoad+' is more than '+maxload); 
     } 

正如刚才的答复说,你可能会比较字符串..

0

所以他们都是字符串您从表单输入获取这些值。比较字符串与数字不同,因此"6" > "1000"为true,而6 > 1000为false。

从窗体输入中获得的每个数字应该被解析为数字(如果它应该是数字)。使用例如parseIntNumber函数。例如:parseInt(currLoad, 10)

+0

这是正确的。但是我很困惑,因为其他操作符工作得很好,没有手动转换数据类型。添加,分割和相乘。我猜JS自动数据类型转换宠坏了我。 – Timson

+0

没错。你需要非常小心。例如。乘法运算符只能用于JS中的数字,因此它将字符串转换为数字。但是其他运营商如'<, >,+'也可以与字符串一起使用。因此,例如,如果您使用带数字和字符串的“+”运算符,它会将数字转换为字符串并将它们连接起来。但'<' and '>'工作相反。 – dreame4