2016-05-20 7 views
0

Я получил этот код JavaScript, чтобы отобразить текущее время на моем сайте, отлично работает на рабочем столе, но он не работает на мобильных устройствахJavaScript часы не показывают текущее время на мобильных устройствах

Замерзает в то время, когда пользователь посещает страницу

Можно ли сделать это возможным? Что-то вроде обновления скрипта каждую секунду, чтобы показать текущее время или любое другое решение?

document.getElementById("clock").innerHTML = GetTime(); 
 

 
function GetTime(){ 
 
    var d = new Date(); 
 
    var nhour = d.getHours(),nmin=d.getMinutes(); 
 
    if (nmin<=9) { 
 
     nmin = "0" + nmin 
 
    } 
 
    return nhour+":"+nmin+""; 
 
}
<span id="clock"></span>

Ваша помощь очень ценится!

EDIT: Благодаря mdickin я понял, что часы не обновляется даже в рабочем столе. Таким образом, весь код имеет что-то неправильно.

+2

Когда вы говорите, что это зависает, вы имеете в виду, что страница становится невосприимчивой? Или вы хотите сказать, что время не обновляется? Потому что я не вижу никакого способа, чтобы время было обновлено даже на рабочем столе. – mdickin

+0

Время не обновляется, и вы правы. Он не обновляется даже на рабочем столе, и мне плохо. – Ermac

ответ

2

Да, вы можете использовать setInterval, который выполняет функцию через регулярные интервалы (в миллисекундах).

function setTime() 
{ 
    document.getElementById("clock").innerHTML = GetTime(); 
} 

setInterval(setTime,1000); 

Вы можете изменить количество миллисекунд, чтобы удовлетворить, в зависимости от того, насколько точно вы хотите быть ... но я сомневаюсь, что вам нужно будет беспокоиться о том больше, чем второй из так или иначе.

Вот ссылка с дополнительной информацией о setInterval and setTimeout

1

Вот простая программа, которую я написал в codepen создать живой таймер JS. В основном все, что вам нужно сделать, это вызвать функцию внутри функции setTimeout и обеспечить частоту в миллисекундах.

function startTimer() { 
 
    var today = new Date(); 
 
    var hours = today.getHours(); 
 
    var mins = today.getMinutes(); 
 
    var sec = today.getSeconds(); 
 
    mins = checkTime(mins); 
 
    sec = checkTime(sec); 
 
    document.getElementById('timer').innerHTML = 
 
    hours + ":" + mins + ":" + sec; 
 
    var t = setTimeout(startTimer, 100); 
 
} 
 

 
function checkTime(i) { 
 
    if (i < 10) { 
 
    i = "0" + i 
 
    }; 
 
    return i; 
 
}  
<body onLoad="startTimer()"> 
 
    <div id="timer"></div> 
 
</body> 
 

Вот ссылка на мой codepen

2

Использование setInterval для запуска вашей GetTime() функции каждую секунду:

document.getElementById("clock").innerHTML = GetTime(); 
 

 
function GetTime(){ 
 
     var d = new Date(); 
 
     var nhour = d.getHours(),nmin=d.getMinutes(); 
 
     if (nmin<=9) { 
 
      nmin = "0" + nmin 
 
     } 
 
     return nhour+":"+nmin+""; 
 
    } 
 
    
 
    setInterval(GetTime, 1000); // run GetTime every 1000ms
<span id="clock"></span>