Другие рассмотрели непосредственную проблему - что вы случайно рассматриваете число как восьмеричное, а не десятичное число, но более глубокая проблема заключается в том, что вы храните числа как строки.Постоянное преобразование в и из строк извилистое и подверженное ошибкам.Лучшим вариантом было бы хранить время в виде двух чисел и иметь функцию, которая преобразует эти числа в строку по требованию.Вот версия, которая хранит числа и их строковое представление отдельно:
var remain = {
mins: 14,
secs: 14,
toString: function () {
var pad = function(num) { return (num < 10 ? "0" : "") + num; };
return pad(this.mins) + ":" + pad(this.secs);
}
};
setInterval (timer, 660);
function timer() {
if (remain.secs === 0) {
if (remain.mins > 0) {
remain.mins -= 1;
remain.secs = 59;
}
} else {
remain.secs -= 1;
}
document.document.getElementById("hello").innerHTML = remain;
}