2012-01-18 136 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) { 
}