Показать сообщение отдельно
  #3 (permalink)  
Старый 27.01.2010, 01:51
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Важно понять специфику работы setTimeout и document.write.

document.write добавляет в документ текст, будет вставлен после закрывающего </script> в текущем блоке скрипта:
<script type="text/javascript">
document.write("[docwrite]");
</script>
<script type="text/javascript">
alert(document.body.innerHTML);
</script>

Ну если документ уже закрыт (т.е., считывание его кода завершено), он откроет новый, пустой, и запишет туда.

setTimeout не останавливает работу скрипта. Эта функция лишь говорит браузеру запустить что-то, по возможности, через столько-то времени.
Код
for (i = 1; i < 4; i++) { 
	setTimeout('document.write(".")', 1000)                 
}

на самом деле запустит все три функции приблизительно через секунду.

Получить нечто похожее на желаемый результат у Вас получится только если setTimeout сработает раньше, чем завершится обработка тега <script>, т.е., фактически почти никогда и в зависимости от фазы Луны.
(Если точнее, то в Firefox с задержкой выполнения скрипта модальным окном.)

Используйте заместо этого изменение innerHTML у элемента:
<script type="text/javascript">
document.write("Загрузка");
for (var i = 1; i < 4; i++){
setTimeout(function(){document.body.innerHTML += "."}, i * 1000)
}
</script>
Ответить с цитированием