Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2014, 14:54
Интересующийся
Отправить личное сообщение для sitar32 Посмотреть профиль Найти все сообщения от sitar32
 
Регистрация: 28.08.2014
Сообщений: 13

как отображать результаты скрипта немедленно, а не после завершения всей функции?
Подскажите пожалуйста как сделать динамический вывод содержания страницы. У меня есть страница, в ней 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 ...");

}


После нажатия на кнопку, показывается только третье сообщение, без первых двух.
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2014, 15:26
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

http://javascript.ru/setTimeout
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2014, 15:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Потому что ваша функция wait - ̜̣̳̘̦̫̘ͤ͊̊͐͑̅е̠ͦ̓̍̆ͤ ̼͉̟͑͂̄̓̈р͕̣̿ͥͥ ̥̲̻͕͙̓̏́̚е̪ͮ̏̒͒̍ͨ ͖͔̹̲̮͎̖̐ͮͩ̐̍̍с̥̼̤̒ͬ̑ͬ͗̉ͫ ̞̺̗̲̹̯̪͎̥ͤ̉ͩ̔̚ь̘̞ͦ̅ ̝͈̹͕̝͉͙͚̐ͩ!̰͎̣̭̮̦̳̠̞ͯ̿̂͐̀
__________________
29375, 35

Последний раз редактировалось Aetae, 28.08.2014 в 16:01.
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2014, 16:32
Интересующийся
Отправить личное сообщение для sitar32 Посмотреть профиль Найти все сообщения от sitar32
 
Регистрация: 28.08.2014
Сообщений: 13

Сообщение от BETEPAH Посмотреть сообщение
http://javascript.ru/setTimeout
это не работает.

изменил код:
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"
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2014, 16:34
Интересующийся
Отправить личное сообщение для sitar32 Посмотреть профиль Найти все сообщения от sitar32
 
Регистрация: 28.08.2014
Сообщений: 13

Сообщение от Aetae Посмотреть сообщение
Потому что ваша функция wait - ̜̣̳̘̦̫̘ͤ͊̊͐͑̅е̠ͦ̓̍̆ͤ ̼͉̟͑͂̄̓̈р͕̣̿ͥͥ ̥̲̻͕͙̓̏́̚е̪ͮ̏̒͒̍ͨ ͖͔̹̲̮͎̖̐ͮͩ̐̍̍с̥̼̤̒ͬ̑ͬ͗̉ͫ ̞̺̗̲̹̯̪͎̥ͤ̉ͩ̔̚ь̘̞ͦ̅ ̝͈̹͕̝͉͙͚̐ͩ!̰͎̣̭̮̦̳̠̞ͯ̿̂͐̀
да дело не в функции wait. результат работы скрипта отображается только после завершения скрипта. но не в процессе. этот код я сгеренировал для примера.
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2014, 17:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

sitar32, парень, ты не понимаешь js. Совсем.
Вот что по твоему делает этот код?
window.setTimeout(printdiv("1"),30000);

Так вот, на самом деле он сразу вызывает printdiv с аргументом "1" и передаёт в setTimeout результат вызова функции.(в данном случае undefined) Через 30 секунд вызовется ничто(undefined) и ничего не произойдёт само собой.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 28.08.2014, 18:27
Интересующийся
Отправить личное сообщение для sitar32 Посмотреть профиль Найти все сообщения от sitar32
 
Регистрация: 28.08.2014
Сообщений: 13

Спасибо большое за помощь, разобрался.
Всем +1 к карме =)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как запустить функцию после другой функции Rentony jQuery 7 07.02.2012 18:01
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
Запуск функции после ресайзинга странички dummer232 jQuery 2 30.09.2010 16:23
Как обнулить переменные после завершения скрипта QRS jQuery 3 07.07.2010 03:08
Как запустить скрипт после отработки другого скрипта? roman2 Общие вопросы Javascript 2 10.08.2009 01:23