Причина, по которой «что-то еще» не отображается, заключается в том, что когда вы вызываете setTimeout и передаете функцию, функция timer
обрабатывается немедленно.То же самое происходит внутри функции.Итак, вы создаете бесконечный бесконечный рекурсивный цикл, который сделает ваш браузер не отвечающим.
Поскольку вы запускаете setTimeout
на timer
каждый раз, когда запускаете функцию timer
, которая1 секунда, вместо использования setTimeout
, вы должны использовать setInterval
.
Так ваш код будет выглядеть так:
var c = 0;
var t;
timer();
// call setInterval here to run the timer function every 1 second
t=setInterval('timer()', 1000);
document.write("something");
function timer(){
if(t) { window.clearTimeout(t) }
update_preview();
c++;
document.write("something else");
}
function update_preview(){
prev = window.open("","preview");
prev.document.open();
prev.document.writeln("<html><head><title>live preview window</title></head><body>");
prev.document.writeln(c);
prev.document.writeln("</body></html>");
prev.document.close();
}
Так что теперь вместо запуска setTimeout каждую 1 секундувы запускаете setInterval один раз, и он будет обрабатываться каждую 1 секунду.