2015-05-17 2 views
-2

Я создаю часы в JavaScript, но когда я увеличиваю секунды на единицы с помощью оператора инкремента, значение увеличивается на * 2.Приращение JavaScript Оператор ins't увеличивается на 1

var hours=0; 
var sec=0; 
var min=0; 

function clock(){ 

    document.getElementById("sec").innerHTML= ++sec; 
    if(sec>59){ 
     document.getElementById("min").innerHTML= ++min; 
     sec=0; 
    } else if(min>59){ 
     document.getElementById("hours").innerHTML = ++hours; 
     min=0; 
    } 
    else if(hours>12){ 
     hours=0; 
    } 
    setInterval(clock, 1000); 
} 
clock(); 
+0

Setinterval не точен, не пытайтесь использовать его для часов. – Nit

+0

Любые другие функции? – ProjectAb

+0

Вы не можете использовать else, если вам не нужно использовать setInterval внутри функции, вызываемой с помощью setInterval. – epascarello

ответ

2

Вы не должны использовать другое, если.

Вы не должны использовать setInterval внутри функции часов. Он должен быть установленTimeout. Использование setInterval означает, что на каждой итерации вы добавляете еще один интервал.

В-третьих, установкаTimeout/setInterval неверна. Вы должны просто использовать дату начала и вычесть текущую дату и определить разницу во времени.

+0

var d = new Date(); \t var h = d.getHours(); \t var m = d.getMinutes(); \t var sec = d.getSeconds(); document.getElementById ("sec"). InnerHTML = h; document.getElementById ("min"). InnerHTML = m; \t document.getElementById ("hours"). InnerHTML = sec; – ProjectAb

+0

Я изменил свой код, и теперь он работает, можете ли вы рассказать мне, как я могу снова вызвать эту функцию? – ProjectAb

Смежные вопросы