我将topdatedata值设为222
我指定了这3个条件
if((topDateData<250)&&(topDateData>25))
{
alert('one');
}
else if((topDateData>300)&&(topDateData<300))
{
alert('Two');
}
else
{
alert('Three');
}
我的问题是为什么它将值变为警报(3)而不是警报(一)?
答案 0 :(得分:2)
当明确将值设置为222
时,我会看到“一个”收到警报:http://jsfiddle.net/Wvjfa/
如果你愿意,你应该调试你的实际值(alert(topDateData);
),看看它是否真的像你想象的那样。
除此之外,Matt Ball是对的,你的第二个条件是borked。另外,在您的问题与发布的代码之间不匹配的变量案例中,Lones和Kerry是正确的。
答案 1 :(得分:1)
Javascript区分大小写,是topdatedata = 222
还是topDateData = 222
?
答案 2 :(得分:0)
看起来你的topDateData变量包含字符串值“222”而不是整数。
您可以尝试以这种方式转换为整数:
topDateData = parseInt(topDateData);
...
答案 3 :(得分:0)
设置一个值会更安全 - 因为你的第二个标准看起来很狡猾
var topDateData = 222;
if(topDateData > 300)
{
alert('two');
}
else if(topDateData > 250)
{
alert('');
}
else if(topDateData > 25)
{
alert('One');
}
else
{
alert('Three');
}
从最难满足的那个开始(在这个例子中是最高的),然后继续努力。它更容易遵循。除此之外它应该工作,按照这里的其他评论
答案 4 :(得分:0)
我的猜测是你有一个字符串。
var trueBool = '222' < '250'; //true
var falseBool = '222' > '25'; //false
要调试topDateData是否为String,请执行以下操作:
alert(topDateData + 1);//outputs '2221' if a string, and '223' if a number
Here显示出差异。
<强>更新强>
我已经测试了alert(('222' < 250) && ('222' > 25));
并输出了true
。但是,我不确定所有JavaScript编译器是否足够聪明,可以先将字符串转换为数字。您应该运行相同的测试,看看您的浏览器是否输出true
。