как отображать результаты скрипта немедленно, а не после завершения всей функции?
Подскажите пожалуйста как сделать динамический вывод содержания страницы. У меня есть страница, в ней div и этот div я меняю в скрипте, но результат изменения виден только после того как скрипт отработал. А мне нужно чтобы результат показывался в процессе работы скрипта.
Файл index.html:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="js/sc-1.js"></script>
<link rel="stylesheet" type="text/css" href="bot.css">
</head>
<body>
<button onclick="swdiv();">test for</button>
<div id="scriptresult">
Ready to work!
</div>
</body>
</html>
Файл sc-1.js
function wait(msecs)
{
var start = new Date().getTime();
var cur = start
while(cur - start < msecs)
{
cur = new Date().getTime();
}
}
function swdiv()
{
$("div#scriptresult").html("loading .");
wait(1000);
$("div#scriptresult").html("loading ..");
wait(1000);
$("div#scriptresult").html("loading ...");
}
После нажатия на кнопку, показывается только третье сообщение, без первых двух. |
|
Потому что ваша функция wait - ̜̣̳̘̦̫̘ͤ͊̊͐͑̅е̠ͦ̓̍̆ͤ ̼͉̟͑͂̄̓̈р͕̣̿ͥͥ ̥̲̻͕͙̓̏́̚е̪ͮ̏̒͒̍ͨ ͖͔̹̲̮͎̖̐ͮͩ̐̍̍с̥̼̤̒ͬ̑ͬ͗̉ͫ ̞̺̗̲̹̯̪͎̥ͤ̉ͩ̔̚ь̘̞ͦ̅ ̝͈̹͕̝͉͙͚̐ͩ!̰͎̣̭̮̦̳̠̞ͯ̿̂͐̀
|
Цитата:
изменил код:
function printdiv(pvalue)
{
$("div#scriptresult").html("loading " + pvalue);
}
function swdiv()
{
//timeout_id = window.setTimeout($("div#scriptresult").html("loading ."),1);
// document.getElementById("scriptresult").innerHTML="start .....";
//wait(2000);
window.setTimeout(printdiv("1"),10000);
window.setTimeout(printdiv("2"),20000);
window.setTimeout(printdiv("3"),30000);
}
теперь при нажатии на кнопку, сразу выводится сообщение "loading 3" |
Цитата:
|
sitar32, парень, ты не понимаешь js. Совсем.
Вот что по твоему делает этот код?
window.setTimeout(printdiv("1"),30000);
Так вот, на самом деле он сразу вызывает printdiv с аргументом "1" и передаёт в setTimeout результат вызова функции.(в данном случае undefined) Через 30 секунд вызовется ничто(undefined) и ничего не произойдёт само собой. |
Спасибо большое за помощь, разобрался.
Всем +1 к карме =) |
| Часовой пояс GMT +3, время: 10:40. |