Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Подскажите про setTimeout, while... (https://javascript.ru/forum/dom-window/33850-podskazhite-pro-settimeout-while.html)

demouser 11.12.2012 07:32

Подскажите про setTimeout, while...
 
Народ, помогите разобраться с JS
<style>
  div {width:50px; height:50px; margin:5px;}
  .d1 {background-color:yellow;}
  .d2 {background-color:red;}
</style>

<div id="r1" class="d1" onclick="this.className = 'd2';"></div>
<div id="r2" class="d1" onclick="this.className = 'd2';"></div>
<div id="r3" class="d1" onclick="this.className = 'd2';"></div>
<div id="r4" class="d1" onclick="this.className = 'd2';"></div>

<script type="text/javascript">
    document.getElementById("r1").click();
    ////проверить если класс r1 = d2, продолжаем
    ////ждем 2 секунды
    document.getElementById("r2").click();
    ////проверить если класс r2 = d2, продолжаем
    ////ждем 2 секунды
    document.getElementById("r3").click();
    ////проверить если класс r3 = d2, продолжаем
    ////ждем 2 секунды
    document.getElementById("r4").click();
</script>


в реальном примере изменение класса происходит после аякс-запроса, поэтому происходит не сразу, и переходить к следующему клику нельзя пока этот класс не изменится
также нужна пауза в пару секунд

ps: с яваскриптом работаю впервые, основной язык c#

ОлегА 11.12.2012 08:40

<script>
function classEdit(){
    d1 = document.getElementsByClassName('d1')[0];
    if(d1){
        d1.className = 'd2';        
        setTimeout(classEdit, 2000);
    }
}


</script>

    <div id="r1" class="d1" onclick="classEdit()">d1</div>
    <div id="r2" class="d1">d2</div>
    <div id="r3" class="d1">d3</div>
    <div id="r4" class="d1">d4</div>

demouser 12.12.2012 03:46

Меня интересует каким образом можно приостановить работу скрипта до момента изменения класса, которое происходит через неизвестный промежуток времени

demouser 12.12.2012 05:21

Сделал пока через вложенные setInterval'ы, конструкция получилась не очень, но вроде работает. Если есть другие варианты предлагайте

ОлегА 12.12.2012 08:33

Цитата:

Сообщение от demouser
Меня интересует каким образом можно приостановить работу скрипта до момента изменения класса

не понятно, на какое событие вы хотите сделать смену классов у этих элементов?

demouser 12.12.2012 16:22

Смена класов происходит произвольно в результате ассинхронного аякса, этот пример просто для тестов.
Я пишу расширение для браузера, для одной трекер системы


Часовой пояс GMT +3, время: 10:15.