Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите разобраться!! (https://javascript.ru/forum/events/39218-pomogite-razobratsya.html)

eugene1210 21.06.2013 06:54

Помогите разобраться!!
 
Таймер не запускается при загрузке в новом окне.
Ошибка:
ReferenceError: showTime is not defined
timer = setInterval("showTime()",1000);

код:
(function(){
var wnd;
var timer;
function showTime(){
var time = new Date();
if(wnd && !wnd.closed && wnd.document){
wnd.document.open();
wnd.document.write("<h1>");
wnd.document.write(time.toLocaleTimeString());
wnd.document.write("</h1>");
wnd.document.close();
}

}

function startTimer(){
if(!timer){
var top = (screen.height-100)/2;
var left = (screen.width-200)/2;
var params = "width=300, height=100, top="+top+",left="+left;
wnd = open('','',params);
timer = setInterval("showTime()",1000);
}
else{
wnd.focus();
}
}
startTimer()
}());

danik.js 21.06.2013 07:14

А все потому, что в setInterval нужно передавать не строку, а функцию. Если передать строку, то она будет eval'иться в глобальном контексте. А функция showTimer не глобальная, поэтому и ошибка.
Нужно так: setInterval(showTime,1000);

А еще тут ошибка:
wnd.document.write("<h1>");
wnd.document.write(time.toLocaleTimeString());
wnd.document.write("</h1>");


Нужно писать так:
var header = "<h1>" + time.toLocaleTimeString() + '</h1';
wnd.document.write(header);


На будущее - обрамляй код в
[js] .. [/js]

eugene1210 22.06.2013 16:55

Спасибо супер


Часовой пояс GMT +3, время: 10:38.