javascript if if else logic

javascript if if else logic

本文关键字:if logic else javascript      更新时间:2023-09-26

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

  1. 当经过的时间从00:07:59变为00:08:00时,颜色从黄色切换回来,这发生在00:05:00
  2. 00:10:00,它从灰色变为红色

我的逻辑允许00:08:0000:09:59之间的任何时间满足第一个条件,即小于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'">";
   }

这是parseInt中的一个特性(而不是bug!)。

当字符串以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'">";
}

即使不知道this.minutes中存储了什么,我猜您也会因为parseInt()缺少radix值而遇到麻烦。

由于您提到了以0开头的数字,这很可能是因为parseInt将这些数字假定为八进制值。

因此,简单的解决方案是,将基数设置为10以指定十进制值:

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