JavaScript, если если еще логика - PullRequest
0 голосов
/ 18 января 2012

В моем коде есть какая-то логическая ошибка, но я не уверен, где.

  1. Когда истекшее время меняется с 00:07:59 на 00:08:00, цвет переключается обратно с желтого, что происходит при 00:05:00.
  2. На 00:10:00 он превращается из серого в красный.

Что-то в моей логике позволяет в любое время между 00:08:00 и 00: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\">";
   }

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Это функция (не ошибка!) В 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\">";
}
2 голосов
/ 18 января 2012

Даже не зная, что хранится в this.minutes, я предполагаю, что вы попали в беду из-за пропущенного значения radix для parseInt().

Поскольку вы упомянули, у вас есть числа, начинающиеся с 0 это очень вероятно, потому что parseInt принимает их в виде восьмеричных значений.

Это простое решение, установите основание на 10, чтобы указать десятичное значение:

if (parseInt(this.minutes, 10) < 5) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...