2016-05-21 3 views
0

Может ли кто-нибудь сказать мне, почему этот код JS не работает?Ошибка в коде js

Он должен печатать каждый раз, когда вторая:

function stampajDatum(){ 
    var now = new Date(); 
    var sat = now.getHours(); 
    var mins = now.getMinutes(); 
    var sec = now.getSeconds(); 
    document.write(sat + ":" + mins + ":" + sec); 
} 
setInterval("stampajDatum()", 1000); 
+2

Вызов 'document.write()' после того, как документ завершения загрузки сбросит его, удаляя все элементы, которые существовали. [Что является альтернативой document.write?] (Http://stackoverflow.com/questions/4537963/what-are-alternatives-to-document-write) –

+0

Кроме того, предоставление строки 'setInterval()' [обычно (http://stackoverflow.com/questions/6081560/is-there-ever-a-good-reason-to-pass-a-string-to-settimeout) по тем же причинам, что и 'eval () '- [' setInterval (stampajDatum, 1000) '] (http://stackoverflow.com/questions/4506074/settimeout-with-string-or-anonymous-function-reference-speedwise). –

+0

Почему вы передали строку в 'setInterval'? это неверно, параметр является функцией. – t0mm13b

ответ

0
function stampajDatum(){ 
    var now = new Date(); 
    var sat = now.getHours(); 
    var mins = now.getMinutes(); 
    var sec = now.getSeconds(); 
    document.write(sat + ":" + mins + ":" + sec);// the problem is here 
    //This writes content to a place after script block 
    //if the script is in head then nothing is visible. 
    //use something like this: 
    //document.getElementById('timer').innerHTML = sat + ":" + mins + ":" + sec; 
} 
setInterval("stampajDatum()", 1000);//This is OK but setInterval(stampajDatum, 1000); is better. 
//Note that there is no() after stampajDatum 
0

Первое сообщение я получаю в моей консоли о том, что подразумеваемые Eval. Уберите кавычки вокруг имени функции в setInterval("stampajDatum()", 1000); (делает его setInterval(stampajDatum(), 1000);)

Я обычно не использую setInterval(), но я знаю, что setTimeout() работы. Вот пример:

function stampajDatum(){ 
    var now = new Date(); 
    var sat = now.getHours(); 
    var mins = now.getMinutes(); 
    var sec = now.getSeconds(); 
    document.write(sat + ":" + mins + ":" + sec); 
    setTimeout(stampajDatum(), 1000); 
} 
stampajDatum(); 
+0

'setTimeout (stampajDatum(), 1000);' не работает –