Показать сообщение отдельно
  #1 (permalink)  
Старый 15.03.2013, 01:07
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

innerHTML не работает правильно
Доброго времени суток. Подскажите пожалуйста. Есть событие при нажатии на div блок. Событие создает пустой массив и раздувает его длину с шагом в единицу до 50, при этом после каждого шага записывает в этот див текущую длину массива.
<div id="status" onclick="qwerty()"style="border:1px solid red; width:165px; height:22px; position:absolute; left: 276px; top: 44px; background-color: #66FF99;"></div>

<script>
function qwerty(){
var massiv = []
for (var u=0; u<=50; u++){
	massiv.push(u)
	document.getElementById('status').innerHTML=u
        //alert(u)
	}
}
</script>
Но беда в том, что на самом деле скрипт записывает длину массива в div блок всего один раз - как раз по окончанию раздувания. Поначалу подумал, что перезапись происходит так быстро, что просто не успеваешь посмотреть все предыдущие 49 значений. Но если поставить длину массива не 50, а на порядки побольше - то все равно увидится только окончательная длинна. Почему так? Разве скрипт не должен переписать значение прежде чем продолжить раздувание длины? Если вставить строку alert(u), чтобы скрипт остановился и выдал сообщение, то будет видно что в таком случае innerHTML переписывает значение. А как это сделать без alert ?

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