Изменение innerHTML в цикле %)
Добрый день :)
у меня есть кусок кода <html> <head> <title></title> <script type="text/javascript" language="javascript"> function forit() { document.getElementById("www").innerHTML = "Beginning"; for (var i = 0; i < 5000; i++) { document.getElementById("www").innerHTML = i; } document.getElementById("www").innerHTML = "Ending"; } </script> </head> <body> <span id="www"></span> <input type="button" value="click" onclick="forit()"/> </body> </html> Будучи наивным по соей природе, я подумал что значение иннерХТМЛ будет меняться в цикле и будет видно сразу же, а в итоге получается что мы увидим только "Ending". Яваскриптом болею недавно, так что не серчайте. Если можно объясните, пожалуйста, как быть в таких случаях или можно кинуть ссылкой на какую нибудь умную статью. Заранее спасибо свем откликнувшимся ;) |
странно как то парсер работает. не раскрасил первые строки функции %)
или может я что не так сделал? |
джаваскрипт отрабатывает намного быстрее, чем может отрисоваться изменение. Поэтому, если надо выводить что-то постепенно. то надо применять setTimeout или setInterval
|
мне это все нужно для рисования прогресса. получается что я должен буду разбить мою функцию на части и выполнять их последовательно по частям?
|
ага
|
Это очень желательно сделать еще и потому, что браузер залипает при длинном цикле, а потом начинает задавать вопросы, навроде "скрипт зациклился - отключать?(да/нет)".
|
мда.... серкрет счастья оказывается не совсем так прост как я думал :(
а жаль.... |
собственно почему я взялся за такой вариант реализации: с самого начала я решил что во время исполнения моего скрипта юзеру будет показываться анимированный гиф имитирующий прогресс, НО ....... умнее всех как всегда оказался Internet Explorer. При выполнении сколько-нибудь продолжительного скрипта все анимированные гифы на страничке замирают. Причем только в осле. что с этим делать и если ли решения данной проблемы не смог найти. Может здесь что-нибудь слышали по этой теме?
|
тебе уже сказали решение...
|
про решение я уже понял. в последнем посте я просто поинтересовался по поводу проблемы в осле с гифами.
|
проблема в осле... с гифами и со всем остальным...
|
Нет в осле никакой проблемы в данном случае. Какая вам разница, анимированные гифы или нет, если браузер завис?
|
Kolyaj,
но во всех остальных браузерах все элементы страницы остаются функциональными и анимированные гифы не замерзают |
Tror,
я повторю вопрос Цитата:
Хотя дайте угадаю: вы событие на ссылку вешаете? |
оказалось, что на ссылку. попробовал менять ссылку на другие хтмл элементы. результат тот же....
|
Kolyaj,
а в чем проблема с ссылками? |
Такая ситуация обычно возникает, когда IE думает, что человек со страницы собрался уходить, а значит анимацию показывать зря не нужно.
|
Та же проблема
Помогите, та же проблема.
для упрощения проверил функцию var i=0; function govalue() { var t=document.getElementById("txt"); t.innerHTML=i; } function setValue() { while(i++<100) setTimeout("govalue()",3500); } Функця ждет некоторое время, но явно меньше 3500*100 милисекунд затем выдает 101. Ну 101 то я поправлю, а вот как добиться чтобы цифры отображались каждый раз после изменения innerHTML? |
<div id='div'></div> <script> var i = 0; var inter = setInterval(function () { document.getElementById('div').innerHTML = i ++i document.getElementById('div').innerHTML==500 ? clearInterval(inter) : document.getElementById('div').innerHTML },1) </script> |
|
То есть средствами javascript невозможно вывести повторяющуюся цепочку данных в цикле? я разочарован - буду перехлдить на другой язык.
Есть другой язык веб-разработки где такое возможно? |
Цитата:
|
Vesst,
ты дурак что ли? Я же тебе дал решение, как это можно сделать, ставь seтInterval и увеличивай i в нем, и проверяй если i равно какому то значению, то прекращай "псевдоцикл" :-/ |
Цитата:
|
|
Часовой пояс GMT +3, время: 00:53. |