powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / и снова про паузу в цикле :(
60 сообщений из 60, показаны все 3 страниц
и снова про паузу в цикле :(
    #39346285
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начитался про setTimeOut и setInterval - голова идёт кругом, а толку никакого :(
Подскажите, как в чистом JS выполнить появление внутренних элементов заданного DIV'а с некоторой задержкой?
Я пробовал вот такую конструкцию изобразить для этого:
Код: javascript
1.
2.
3.
4.
5.
cel=cont.getElementsByClassName('Container')[0]; // это - заданный DIV
	for (var q = 0; q < cel.children.length; q++) {
		cel.children[q].style.display = 'block';
		// КАК сюда вставить задержку времени 0.3сек?
	}


Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346303
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajka,
попробуй промисы, возможно помогут
иначе ни как....
я не смог добиться такого
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346307
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяneznajka,
попробуй промисы, возможно помогут
иначе ни как....
я не смог добиться такого
Эх, а писал, что какую-то там базу знаешь :)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346308
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajka, вот Вам пример, где элементы по очереди показываются:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<!DOCTYPE html>
<html>
<head>
  <style>
    .Container div {
      display: none;
    }
  </style>
</head>
<body>
  <div class="Container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
  <script>
    var cel = document.getElementsByClassName('Container')[0],
        q;
    
    for (q = 0; q < cel.children.length; q++) {
      show(cel.children[q], 300 * (q + 1));
    }
      
    function show(element, timeout) {
      setTimeout(function() { element.style.display = 'block'; }, timeout);
    }
  </script>
</body>
</html>


http://plnkr.co/edit/UfUohJH7GROpJI79Eexx?p=preview

Если уберёте из кода выделенный множитель (q + 1) , то все разом покажутся через 0.3 сек.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346309
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajka, а вот через setInterval:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<!DOCTYPE HTML>
<html>
<head>
  <style>
    .Container div {
      display: none;
    }
  </style>
</head>
<body>
  <div class="Container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>  
  <script>
    var cel = document.getElementsByClassName('Container')[0],
        q = 0, timer;

    timer = setInterval(function() {
      cel.children[q++].style.display = 'block';

      if (q == cel.children.length) clearInterval(timer);
    }, 300);
  </script>
</body>
</html>


http://plnkr.co/edit/jq4W5vCYqjP1oPiVvI0T?p=preview
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346324
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
а ты путаешь понятия вывод в цикле и setTimeOut и setInterval .
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346325
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяskyANA,
а ты путаешь понятия вывод в цикле и setTimeOut и setInterval .
Не понимаю. Какую ты задачу себе придумал и не можешь решить?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346328
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

когда у тебя происходит работа в цикле
и результат необходимо выводить на каждом шаге этого цикла.
проблема в том, что если в цикле поставить cjnsole.log('ля-ля') то это л-я-ля будет появляться на каждом шаге
а если вывести на экран изменение какого-либо параметра изменение фона дивов по очереди, то этого не увидишь - измениея будут не на каждом шаге, а через непонятно какое время, и по скольку...
если дебажить код - то всё произойдет как надо.
js изменит отображаемое состояние dom, но это изменение не прорисуется на экране. поток выполнения js имеетбольший приоритет перед отображением .
у меня есть реальный пример - загрузка нескольких картинок с локального диска - работа идет в цикле , на загрузку картинки требуется около секунды, но отображаются они произвольным образом, видимо во время когда система кэширует загруженное на диск.
и setTimeOut и setInterval не помогает.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346329
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяу меня есть реальный пример - загрузка нескольких картинок с локального диска - работа идет в цикле , на загрузку картинки требуется около секунды, но отображаются они произвольным образом, видимо во время когда система кэширует загруженное на диск.
и setTimeOut и setInterval не помогает
а ты обрабатываешь событие окончания загрузки картинки?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346333
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяskyANA,

когда у тебя происходит работа в цикле
и результат необходимо выводить на каждом шаге этого цикла.
проблема в том, что если в цикле поставить cjnsole.log('ля-ля') то это л-я-ля будет появляться на каждом шаге
а если вывести на экран изменение какого-либо параметра изменение фона дивов по очереди, то этого не увидишь - измениея будут не на каждом шаге, а через непонятно какое время, и по скольку...
если дебажить код - то всё произойдет как надо.
js изменит отображаемое состояние dom, но это изменение не прорисуется на экране. поток выполнения js имеетбольший приоритет перед отображением .
у меня есть реальный пример - загрузка нескольких картинок с локального диска - работа идет в цикле , на загрузку картинки требуется около секунды, но отображаются они произвольным образом, видимо во время когда система кэширует загруженное на диск.
и setTimeOut и setInterval не помогает.
Мда, давай ты не будешь мне рассказывать про поток выполнения, цикл событий (event loop) и прочее...

Выше я привёл два рабочих примера со ссылками на plnkr.co, где можно посмотреть как появляются элементы.
Какие конкретно проблемы ты видишь в моём коде?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346335
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
а давай ты не будешь городить тут ерунду.
сравни время выполнения твоего цикла и время появления на экране.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346337
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяskyANA,
а давай ты не будешь городить тут ерунду.
сравни время выполнения твоего цикла и время появления на экране.
А давай не будем переходить на личности.

Есть задача, сформулированная ТС-ом, есть два решения от меня. Давай их и обсудим.

Какие конкретно проблемы ты видишь в моих решениях?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346339
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно ты прочитал лишь заголовок темы: "и снова про паузу в цикле".
И рассуждаешь про себя как сделать паузу. Да?

А я прочитал и первое сообщение, где ТС уточняет свою проблему: "Подскажите, как в чистом JS выполнить появление внутренних элементов заданного DIV'а с некоторой задержкой?".

Вот появление элементов с задержкой я и показал на примерах выше.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346340
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
ТС надо в цикле поставить задержку. а не выполнить что-то отдельно , как это делают setTimeOut и setInterval.
в твоих вариантах цикл пролетел, а потом начали выполняться setTimeOut и setInterval
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346344
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяskyANA,
ТС надо в цикле поставить задержку. а не выполнить что-то отдельно , как это делают setTimeOut и setInterval.
в твоих вариантах цикл пролетел, а потом начали выполняться setTimeOut и setInterval
Прости, но ты используешь странную терминологию.

Что значит выполнить что-то отдельно? Отдельно от чего?
Что значит в цикле поставить задержку? Ты таки хочешь поставить выполнение на паузу, то есть "усыпить" поток выполнения?

Давай обратимся к документации, где я выделю одно слово несколько раз красным: WindowTimers.setTimeout()

Краткое изложение
Вызов функции или выполнение фрагмента кода после указанной задержки .

Синтаксис
Код: javascript
1.
2.
var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);


где

timeoutID - это числовой ID, который может быть использован позже с window.clearTimeout().

func - это функция, которую требуется вызвать после delay миллисекунд.

code - в альтернативном варианте применения это строка, содержащая код, который вы хотите выполнить после delay миллисекунд (использовать этот метод не рекомендуется по тем же причинам, что и eval())

delay - задержка в миллисекундах (тысячных долях секунды), после которой будет выполнен вызов функции. Реальная задержка может быть больше; см. Notes ниже.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346348
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, надеюсь ты прочитал вышенаписанное мной сообщение.

И давай теперь обратимся к первому посту ТС-а:
neznajka Начитался про setTimeOut и setInterval - голова идёт кругом, а толку никакого :(
Подскажите, как в чистом JS выполнить появление внутренних элементов заданного DIV'а с некоторой задержкой ?
И подумаем над тем, что возможно автор просто пытается сделать упражнение на использование setTimeout и setInterval :)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346352
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
обратимся к коду ТС
Код: javascript
1.
2.
3.
4.
for (var q = 0; q < cel.children.length; q++) {
		cel.children[q].style.display = 'block';
		// КАК сюда вставить задержку времени 0.3сек?
	}


вставить паузу в цикле, т.е. остановить на время паузы выполнение.
первое что приходит в голову setTimeOut и setInterval.
но они здесь не помогут. они не остановят цикл. они запустятся после окончания работы цикла.
да твои варианты отобразят появление с задержкой, но это будет уже после того как цикл завершится.
а это уже может нарушить остальную логиу работы, как , к примеру , у меня с загрузкой картинок.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346355
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяskyANA,
обратимся к коду ТС
Код: javascript
1.
2.
3.
4.
for (var q = 0; q < cel.children.length; q++) {
		cel.children[q].style.display = 'block';
		// КАК сюда вставить задержку времени 0.3сек?
	}



вставить паузу в цикле, т.е. остановить на время паузы выполнение.
первое что приходит в голову setTimeOut и setInterval.
но они здесь не помогут. они не остановят цикл.А можешь объяснить зачем это нужно ТС-у?

вадяда твои варианты отобразят появление с задержкойТо есть сделают ровно то, что нужно ТС-у.

вадяно это будет уже после того как цикл завершится.У него в цикле что делается? Ровно одно: cel.children[q].style.display = 'block' . То есть именно эту строчку кода ТС хочет выполнить с задержкой.

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

Но хорошо, третий вариант:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<!DOCTYPE html>
<html>
<head>
  <style>
    .Container div {
      display: none;
    }
  </style>
</head>
<body>
  <div class="Container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
  <script>
    var cel = document.getElementsByClassName('Container')[0];
      
    loop(0, cel.children.length); // ... начало цикла ...
    
    function loop(i, l) {      
      setTimeout(
        function() {
          cel.children[i].style.display = 'block'; // ... тело цикла ...
          i = i + 1; // ... шаг цикла ...
          
          if (i < l) { // ... условие цикла ...
            loop(i, l);
          }
        }, 300);
    }
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346360
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа это уже может нарушить остальную логиу работы, как , к примеру , у меня с загрузкой картинок.
ты понадеялся на то,что картинки будут поступать в порядке выдачи запросов на загрузку?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346361
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
последний вариант ТС может и устроит.
но это костыль.
в данном случае подошла б команда sleep :) если б такая была.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346362
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого, тут баталии разгорелись! Даже и не предполагал :)
В любом случае - спасибо всем за участливое отношение. И простите, что задержался с ответом - отсыпался после ночных "поединков" с непостижимой логикой синтаксиса JS :)
Да, мне пригодятся изложенные тут способы решения (отдельное спасибо skyANA), но правильно заметил и вадя: я не достаточно чётко изложил цель своего вопроса.
Исправляюсь - прилагаю тестовый упрощённый вариант своих файлов: это древовидный раскрывающийся список значений, он работает именно так, как мне и нужно - в каждый момент времени может быть открытой лишь ОДНА подгруппа.
Код за основу взял отсюда и усовершенствовал для отображения лишь одной подгруппы. Обозначу этот вариант дерева как вариант №1 .
Я просто хочу его ещё усовершенствовать, чтобы каждая подгруппа открывалась плавно. Как в этом варианте №2 (ближе к середине страницы, где дерево с пунктами "Программирование", "Верстка", "Дизайн"...). Сам этот вариант №2 с последней ссылки мне не удалось поместить в свой DIV: этот DIV у меня изначально скрытый (display: none), а когда я включаю его видимость (display: block), то вложенное в него дерево из варианта №2 становится сразу раскрытым во всех узлах :(
Поэтому я от варианта №2 отказался, и решил адаптировать под себя именно вариант №1.
И мне осталось лишь снабдить его плавностью раскрытия-закрытия. Вот и вся преамбула к моему вопросу в начале темы. Извините, если слишком запутанно изложил.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346364
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв данном случае подошла б команда sleep :) если б такая была.
а ты догадываешься, почему её нет?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346365
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадяа это уже может нарушить остальную логиу работы, как , к примеру , у меня с загрузкой картинок.
ты понадеялся на то,что картинки будут поступать в порядке выдачи запросов на загрузку?
мне надо чтоб при загрузке катринки отобразилась инфа о её загрузке. порядок не интересует.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
                <%-- загрузка через кнопку --%>
                document.getElementById('file').addEventListener('change', function (evt) {
                    var n = evt.target.files.length;
                    var a = 0;
                    for (var i = 0; i < n; i++) {
                        var reader = new FileReader();
                        $('#list_files').append('<span data-pic="' + i + '">' + this.files[i].name + ' &nbsp; &nbsp; &nbsp;</span>');
                        reader.onload = function (e) {
                            var pic = new Image();
                            pic.src = e.target.result;
                            fb['pic' + a] = pic;
                            $('#pic_div').append('<img class="pic_del" src="pic/del_.png" alt="" data-pic="' + a + '"/><img src="' + pic.src + '" alt="" data-pic="' + (a++) + '"/>');
                            $('#list_files').find('span[data-pic="' + (a - 1) + '"]').css('color', 'red');
                        };
                        reader.readAsDataURL(this.files[i]);
                    }
                }, false);
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346366
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадяв данном случае подошла б команда sleep :) если б такая была.
а ты догадываешься, почему её нет?
дак я привел её только для пояснения логики.....
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346368
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадядак я привел её только для пояснения логики.....
тогда почему - костыль?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  <script>
    var cel = document.getElementsByClassName('Container')[0];
      
    loop(0, cel.children.length,function(i){cel.children[i].style.display = 'block';},300); 
         
    function loop(i, l, body,interval) {      
      setTimeout(
        function() {  
          body(i);// ... тело цикла ...    
          i = i + 1; // ... шаг цикла ...          
          if (i < l) { // ... условие цикла ...
            loop(i, l,body,interval);
          }
        }, interval);
    }
  </script>
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346370
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
потому как есть стандартный цикл
логически понятный и обоснованный, а ему на замену предлагается искусственный цикл.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346378
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaОго, тут баталии разгорелись! Даже и не предполагал :)
В любом случае - спасибо всем за участливое отношение. И простите, что задержался с ответом - отсыпался после ночных "поединков" с непостижимой логикой синтаксиса JS :)
Да, мне пригодятся изложенные тут способы решения (отдельное спасибо skyANA), но правильно заметил и вадя: я не достаточно чётко изложил цель своего вопроса.
Исправляюсь - прилагаю тестовый упрощённый вариант своих файлов: это древовидный раскрывающийся список значений, он работает именно так, как мне и нужно - в каждый момент времени может быть открытой лишь ОДНА подгруппа.
Код за основу взял отсюда и усовершенствовал для отображения лишь одной подгруппы. Обозначу этот вариант дерева как вариант №1 .
Я просто хочу его ещё усовершенствовать, чтобы каждая подгруппа открывалась плавно. Как в этом варианте №2 (ближе к середине страницы, где дерево с пунктами "Программирование", "Верстка", "Дизайн"...). Сам этот вариант №2 с последней ссылки мне не удалось поместить в свой DIV: этот DIV у меня изначально скрытый (display: none), а когда я включаю его видимость (display: block), то вложенное в него дерево из варианта №2 становится сразу раскрытым во всех узлах :(
Поэтому я от варианта №2 отказался, и решил адаптировать под себя именно вариант №1.
И мне осталось лишь снабдить его плавностью раскрытия-закрытия. Вот и вся преамбула к моему вопросу в начале темы. Извините, если слишком запутанно изложил.

http://www.sql.ru/forum/actualfile.aspx?id=19887776] Приложенный файл (variant1.zip - 8Kb)
Рассуждения вади вообще не об этом. Не путайтесь.

По сути Ваша проблема сводится к тому, как реализовать простую анимацию. Вам сюда: https://learn.javascript.ru/animation
Посмотрите там сначала на то, как сделать это средствами CSS.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346381
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяИзопропил,
потому как есть стандартный цикл
логически понятный и обоснованный, а ему на замену предлагается искусственный цикл.
ну нарисуй без "костыля" ( хоть в вебе, хоть на десктопе)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346386
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяИзопропил,
потому как есть стандартный цикл
логически понятный и обоснованный, а ему на замену предлагается искусственный цикл.
Вот ты мне скажи, если ты изначально думал о sleep и при этом ты знаешь "базу", то зачем ты Promise предложил?
Это же прост способ организации асинхронного кода.
Внутри может быть как setTimeout, так и вызов сервера. Или другой асинхронный процесс.

Разве что синхронный ajax запрос в него засунуть :) Но его можно и без Promise использовать.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346388
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajka, кстати можете ведь на исходники jQuery посмотреть: https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js

Поищите по slideDown и Generate parameters to create a standard animation .
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346403
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил ну нарисуй без "костыля" ( хоть в вебе, хоть на десктопе)
дак в том и проблема, что это решается только этим костылём.

авторВот ты мне скажи, если ты изначально думал о sleep и при этом ты знаешь "базу", то зачем ты Promise предложил?
на stackoverflow был вопрос о загрузке картинок с локального диска на текущую страницу (не на сервер), но там стояла проблема несколько иначе - нужно было соотнести имя загружаемого файла и его содержимое. там решили именно через промисы.
в моём коде нет такого соответствия, мне это и не требуется. я с промисами ещё не сталкивался, поэтому предложил ТС поробоать - и поделиться результатом.
если есть опыт работы с промисами - поделись в применении к моей проблеме.
авторЭто же прост способ организации асинхронного кода.
Внутри может быть как setTimeout, так и вызов сервера. Или другой асинхронный процесс.

Разве что синхронный ajax запрос в него засунуть :) Но его можно и без Promise использоват
причём здесь база и ajax?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346406
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяИзопропилну нарисуй без "костыля" ( хоть в вебе, хоть на десктопе)
дак в том и проблема, что это решается только этим костылём.
это не проблема, это решение, причём стандартное.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346407
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторэто не проблема, это решение, причём стандартное.
раз другого решения нет - переходит в "стандартное" :)
но по сути: замена стандартного цикла на что-то его заменяющее...
и, к сожалению, в моём случае это не подходит...
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346409
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторВот ты мне скажи, если ты изначально думал о sleep и при этом ты знаешь "базу", то зачем ты Promise предложил?
на stackoverflow был вопрос о загрузке картинок с локального диска на текущую страницу (не на сервер), но там стояла проблема несколько иначе - нужно было соотнести имя загружаемого файла и его содержимое. там решили именно через промисы.
в моём коде нет такого соответствия, мне это и не требуется. я с промисами ещё не сталкивался, поэтому предложил ТС поробоать - и поделиться результатом.
если есть опыт работы с промисами - поделись в применении к моей проблеме.То есть ты предложил попробовать Promise, потому как на Stackoverflow через них решили совершенно другую задачу, при этом сам их даже и не пробовал.
Что тут сказать? Жжешь :)

Я так могу Web Workers предложить. Недавно со мной поделились реальными кейсами их использования. Пусть и ТС попробует :)

вадяавторЭто же прост способ организации асинхронного кода.
Внутри может быть как setTimeout, так и вызов сервера. Или другой асинхронный процесс.

Разве что синхронный ajax запрос в него засунуть :) Но его можно и без Promise использоват
причём здесь база и ajax?Какая ещё база? Ты же захотел блокировать выполнение, верно? Вот синхронные запросы как раз это и делают. Не знал?
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346411
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторэто не проблема, это решение, причём стандартное.
раз другого решения нет - переходит в "стандартное" :)
но по сути: замена стандартного цикла на что-то его заменяющее...
и, к сожалению, в моём случае это не подходит...На мой взгляд было бы лучше, если бы ты оформил свою проблему отдельным топиком, где детально её описал. Вместо пустых рассуждений.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346415
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To skyANA:
Спасибо за ссылки, но ранее предложенные Вами варианты мне подходят больше. Я с ними уже начал работать.
Что же касается сути советов, то:
2) "Уразуметь" принцип устройства и работы JQ-функций - я и сам уже пытался (потому-то и сидел за компом до 3-х ночи, разбирая исходный код JQ 1.7.2) - нет, это мне не дано. Видать, даже в базовых вопросах JS я пока ещё не слишком "крутой перец" :) Просто все свои сознательные годы мне приходилось иметь дело с языками программирования, имеющими более "традиционный" синтаксис. Типа TupboPascal, FoxPro/VFP, VB/VBA. Потому очень уж трудно (в мои без малого 50:) перестроиться на понимание другого принципа синтаксического построения команд. Но я не сдаюсь - например, уже почти "допёр" почему в некоторых циклах JS нельзя обойтись без [неценз.] замыканий. Это для меня почти подвиг :)
1) Анимации CSS - я уже пробовал. Использую по мере необходимости. Но переключение display между none и block средствами CSS, по-моему, не осуществить. Или я ещё не всё об этом знаю. Правда, в моём случае, ещё можно было бы анимировать рост высоты раскрывающейся подгруппы дерева - тогда можно было бы, наверное, и средствами CSS обойтись - только тогда надо большие изменения вносить в структуру страницы, а это - нежелательно, т.к. в ней уже 90% содержания отлажено и работает должным образом.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346420
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaНо переключение display между none и block средствами CSS, по-моему, не осуществить
Точнее, я имел ввиду "не осуществить его анимацию" средствами CSS.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346424
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи, к сожалению, в моём случае это не подходит...
случай - в студию
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346428
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадяи, к сожалению, в моём случае это не подходит...
случай - в студию
В отдельный топик! :)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346432
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот 19888274
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346783
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
Помогите ещё разобраться, пожалуйста - я переделал свой js-файл, применив Вашу функцию loop, но узлы дерева раскрываются либо рывками, либо вообще НЕплавно :(
Видимо, тут нужна какая-то строгая привязка к моменту времени запуска функции и измерение прошедшего с этого момента временного интервала перед каждой установкой display: block.
Или я как-то коряво/неправильно применил предложенный Вами код. Посмотрите, пожалуйста. Файлы прилагаю (изменён лишь js-файл, остальные 2 - те же самые)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346799
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaskyANA,
Помогите ещё разобраться, пожалуйста - я переделал свой js-файл, применив Вашу функцию loop, но узлы дерева раскрываются либо рывками, либо вообще НЕплавно :(Скорее всего ваша цель научиться самому реализовать меню?
Если нет, то вот предлагаю /вообще готовых проектов реализующих меню очень много/ один из проектов /использую его/:
http://livemenu.sourceforge.net
https://sourceforge.net/projects/livemenu/files/LiveMenu-1.1.2/liveMenu-1.1.2.zip/download

Чем меня привлек этот проект?
Тем что меню на js с помощью него реализовать очень просто.
Конечно замечания к проекту имеются, но в целом имеем а-ля Windows меню /типичное меню с использованием WIN API/.

Как использую?
В xml создают прообраз меню, а затем с помощью модуля на PHP генерирую js код.
Все!
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346913
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,
Нет, меню уже у меня организовано. И даже работает :)
Просто у меня на странице будет генериться 3d-модель резистора. Я хочу сделать так, чтоб его номинал можно было назначить не только с помощью маркировочных колец (это я уже сделал), но и путём выбора из ряда стандартных номиналов. Но, поскольку этот ряд достаточно "длинный" (ряд Е192, например, имеет более 205*3 значений), то ради удобства выбора я решил его сделать в виде дерева с раскрывающимися узлами - уже получилось довольно неплохо. Теперь хотелось бы обеспечить плавность раскрытия - приукрашка такая. :)
Ну, а попутно - осваиваю JS. Так сказать - на конкретной задаче.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346919
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaНу, а попутно - осваиваю JS. Так сказать - на конкретной задаче.Понятно.
Еще немножко об предложенном проекте.
В нем меню может быть представлено как по горизонтали так и по вертикали.
Скорее всего вам нужно смотреть не в сторону меню, а реализации дерева.
Ну а на него уже можете навесить всякие "игрушки" ...
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39346950
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,
Так я как раз деревом и занимаюсь, а не менюшкой.
В принципе, если мне не удастся сделать его плавным - сойдёт и так. Но пока ещё я поборюсь - а вдруг получится? :)
Всё-таки тут довольно дельные советы дают. Не то что на javascript.ru - там народ заносчивый и потому практически безучастный.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347017
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaТак я как раз деревом и занимаюсь, а не менюшкой. https://habrahabr.ru/post/151239/ JsTree — деревья это так просто
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347120
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaskyANA,
Помогите ещё разобраться, пожалуйста - я переделал свой js-файл, применив Вашу функцию loop, но узлы дерева раскрываются либо рывками, либо вообще НЕплавно :(
Видимо, тут нужна какая-то строгая привязка к моменту времени запуска функции и измерение прошедшего с этого момента временного интервала перед каждой установкой display: block.
Или я как-то коряво/неправильно применил предложенный Вами код. Посмотрите, пожалуйста. Файлы прилагаю (изменён лишь js-файл, остальные 2 - те же самые)

http://www.sql.ru/forum/actualfile.aspx?id=19890664] Приложенный файл (test_tree3.rar - 2Kb)
Да уж, ну и код Вы навернули :) Я бы переписал на фиг, но...

Вот поправил: http://plnkr.co/edit/sqd4FlnpvtyrVf8yunxz?p=preview
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347193
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Ждём ECMAScript 6. Не знаю есть ли в нём нужный функционал (неблокирующих задержек или что-то типа processMessages), но в нём точно будет yield (генераторы). С помощью этих генераторов и обычно setTimeoutможно будет приблизиться к тому, о чём ты говоришь. Можно будет это реализовать для функций верхнего уровня (например для функций, вызванных по некому событию).

Да и я видел там будет async некая... Вот только я не понял будет ли это многопоточность реализована, или просто красивая реализация setTimeout :)

В общем сейчас поддержка основными браузерами уже около 95% на десктопе. Так что совсем скоро... Жаль, конечно, андроид позади планеты всей. :( там самые новые версии всего на 25% поддержку включили.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347205
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,
судя по http://caniuse.com андроид не слишком отстаёт, хром под ним вполне в ногу шагает, даже мозилла.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347462
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНе знаю есть ли в нём нужный функционал (неблокирующих задержек или что-то типа processMessages)
спецификацию попробуй почитать
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347667
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Владимир2012:
Большое спасибо за ссылки.
А я знаю, что это просто. Потому и сделал уже само дерево. Хотел лишь привить ему плавное раскрытие. Но без JQ.
Ибо я уже наступал на грабли с JQ (описал выше - JQ в моём DIV'е (переключаемом с display: none на display: block ) никак не хочет показать дерево сначала в свёрнутом виде и всегда его упорно разворачивает во всю высоту сразу после переключения DIV'а на display: block ), и потому взял вариант попроще и попослушней - без JQ. И кое-что уже получается.


skyANA,
Во! Самое то :) Спасибо огромное - попытаюсь разобраться на будущее.
А насчёт неуклюжести кода - м-дя, есть такое дело. Но - "я не волшебник, я только учусь" (С) - такая отмазочка сойдёт на первый случай? :)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347777
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO skyANA:
Благодарю за помощь - действительно поучительно для меня оказалось!
Оказывается, не везде в JS-циклы нужно втыкать замыкания :)
Да и за анимацию сворачивания - отдельное спасибо: к ней я вообще не знал как подступиться, думал уже ограничиться лишь плавным разворачиванием. А Вы - бац! - и её так изящно победили :).
Попутно я сравнил и взял на заметку некоторые приёмы оформления кода.
А параметр 13 для функции loop Вы, наверное, выбрали исходя из желаемой задержки и максимального количества элементов в узле - Round(300/24), да?
Это натолкнуло меня на мысль сделать его переменным - адаптируемым к количеству элементов в текущем (кликнутом) узле. Это попробую сделать сам.

Ещё раз спасибо Вам, и всем откликнувшимся!
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347855
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaЕщё раз спасибо Вам, и всем откликнувшимся!Скоро от нас отделаться хотите ... /если кто понимает о чем я. На всякий случай. Шучу!/
Сворачивать и разворачивать узлы казалось бы что еще нужно. Все так просто ...
Просто для тех кто ни хочет думать ...

У меня например в узлах дерева хранятся данные таблиц /если возможно то и вся таблица/ и при разворачивании узла
открывается полноценный грид для редактирования данных ....

PS: На сколько понял вашу задачу у вас дерево выполняет аналогичные задачи /отобразить и предоставить возможность изменять данные/.
Так что у вас работа выполнена процентом на 5 /защита данных, котнтроль, хранение, ... ... ... .../.

Все!
С Богом!
Для меня это не пустые слова ...
Я не фанат. Фанатизм это скорее всего тяжелая болезнь /мне она хорошо известна. Ни кому не пожелаю ... Спаси Господи!/.
Духовники ее именуют - "прелесть" /то бишь прельщенный .../
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347886
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012У меня например в узлах дерева хранятся данные таблиц
отделение модели от представления придумали какие-то странные люди
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347904
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилВладимир2012У меня например в узлах дерева хранятся данные таблицотделение модели от представления придумали какие-то странные людиО ужас! Как вы такое обо мне могли подумать ...
Руки мои крюки ...
А люди действительно странные - в WWW умеют из мухи слона сделать ... /и много иного/.

Пардон.
Фразу Владимир2012У меня например в узлах дерева хранятся данные таблицнужно было понимать где-то так:
При открытии узла дерева в зависимости от типа данных, создаются диалоговые формы для их просмотра и редактирования ...
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347924
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,

авторПо радио читают Маяковского: "Мы говорим - Ленин, подразумеваем - партия..."
- Ну да! - говорит Рабинович. - Вот уже пятьдесят лет говорим одно, а
подразумеваем другое!
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347930
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

"Коль пошла такая пьянка ...".

Часто и густо при общении людей наблюдается абсолютное не понимание друг друга.
С виду соглашаются и вопросы задают друг другу, а по сути имеем:
[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347961
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,
Нет, у меня задача попроще - не редактировать, а всего лишь предоставить возможность выбрать желаемое значение из стандартного ряда. Но поскольку ряд слишком длинный, то я решил его сгруппировать по первым цифрам - вышло довольно приемлемо и более-менее компактно. А благодаря skyANA - ещё и плавненько :)
Теперь пытаюсь это ПРАВИЛЬНО запихнуть в свой DIV - пока не получается, но я ещё не готов сдаться и сформулировать вопрос по этому поводу: пока есть ещё с чем поэкспериментировать самому.
Ну, а потом похвастаюсь здесь. Или - наоборот, пожалуюсь и подостаю всех новыми вопросами. Так что - я не "отделываюсь" :)
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39347969
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaИли - наоборот, пожалуюсь и подостаю всех новыми вопросами. Так что - я не "отделываюсь" :)Рад за вас.
...
Рейтинг: 0 / 0
и снова про паузу в цикле :(
    #39348093
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012Изопропил,

"Коль пошла такая пьянка ...".

Часто и густо при общении людей наблюдается абсолютное не понимание друг друга.
С виду соглашаются и вопросы задают друг другу, а по сути имеем:
[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / и снова про паузу в цикле :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]