2012-01-18 143 views
0

我的代码中存在某种逻辑错误,但我不确定在哪里。javascript if if else逻辑

  1. 当经过时间的推移从00:07:5900:08:00,颜色从黄色,这恰好在00:05:00切换回。
  2. 00:10:00它从灰色变为红色。

东西在我的逻辑允许00:08:0000:09:59之间的任何时间,以满足第1条件是小于5

if (parseInt(this.minutes) < 5) { 
     fontColor = "<Font class=\"Gray\">"; 
    } else if (parseInt(this.minutes) >= 5 && parseInt(this.minutes) < 10){ 
     fontColor = "<Font class=\"Yellow\">"; 
    } else { 
     fontColor = "<Font class=\"Red\">"; 
    } 
+0

''标签?我们是否回到了90年代? ''在HTML 4.1及更高版本中被删除。改为使用''。 – 2012-01-18 15:11:00

+0

btw,标记已弃用。你最好使用CSS。 – yoavmatchulsky 2012-01-18 15:11:30

+0

您是否尝试过console.log(this.minutes)或警报alert(this.minutes)以确定您站在哪里? – Mike 2012-01-18 15:18:29

回答

4

这是parseInt函数的特征(未错误!)。

当字符串以0开始时,它会在八进制(基数8)而不是小数(基数10)中解析它。 只传递10的第二个参数,它将使用该基础进行解析。

if (parseInt(this.minutes, 10) < 5) { 
    fontColor = "<Font class=\"Gray\">"; 
} else if (parseInt(this.minutes, 10) >= 5 && parseInt(this.minutes, 10) < 10) { 
    fontColor = "<Font class=\"Yellow\">"; 
} else { 
    fontColor = "<Font class=\"Red\">"; 
} 
+1

好吧,我不会称之为一个功能..:p – jAndy 2012-01-18 15:13:46

+0

优秀的修复,谢谢。 – rd42 2012-01-18 19:08:00

2

即使不知道什么是存储在this.minutes,我的猜测是,你有麻烦了,因为parseInt()缺少radix价值。

既然你提到你得到的数字是从0开始的,这很可能是因为parseInt将它们看作八进制值。

那么简单的解决方案,设置基数10指定十进制值:

if (parseInt(this.minutes, 10) < 5) { 
}