Проблема с setTimeout
Здравствуйте. Есть код
< p></ p>
var s;
var el;
var timeoutId;
var pos = 0;
var s1 = "пример выполнения скрипта";
el = document.getElementsByTagName('p');
s = '[';
function writeP(posChar) {
//alert(posChar + ' ' + s1.length);
if (posChar < s1.length) {
if (s1.charAt(posChar) == ' ') {
s += '<br>';
}
s += s1.charAt(posChar);
}
else {
clearTimeout(timeoutId);
alert('finish');
return;
}
timeoutId = setTimeout('writeP(++pos)', 500);
el[0].innerHTML = s;
}
writeP(pos);
el[0].innerHTML += ']';
Функция writeP выводит строку в блок абзаца, но следующая за её вызовом строка кода (последняя строка) не выполняется. Что неправильно? |
Цитата:
Поставь остановку перед 26-й строкой и увидишь, что все там есть...
<p></p>
<script type="text/javascript">
var s;
var el;
var timeoutId;
var pos = 0;
var s1 = "пример выполнения скрипта";
el = document.getElementsByTagName('p');
s = '[';
function writeP(posChar) {
//alert(posChar + ' ' + s1.length);
if (posChar < s1.length) {
if (s1.charAt(posChar) == ' ') {
s += '<br>';
}
s += s1.charAt(posChar);
}
else {
clearTimeout(timeoutId);
alert('finish');
return;
}
timeoutId = setTimeout('writeP(++pos)', 500);
alert(s)
el[0].innerHTML = s;
}
writeP(pos);
el[0].innerHTML += ']';
</script>
Т.ч. меняй алгоритм |
Имеется ввиду 28 строка
|
kdlinny, ты мой пример запускал? Что получается на экране по шагам смотрел?
|
kdlinny,
строка 28 исполнится после первого шага функции writeP - браузеру же надо чем-то заниматся пока таймер тикает, на втором шаге writeP сотрёт всё что делала строка 28 |
Спасибо. Всё получилось.
|
| Часовой пояс GMT +3, время: 02:24. |