2015-12-05 4 views
1

Я дам вам увидеть первый, что я получил:Подождите, прежде чем начать новый цикл в FOR - JS

CODE

я решил поэкспериментировать и сделать скрипт, который заказ номера в массиве всячески ,

Первый способ, которым я занимаюсь, это "Selection mode", где вы находите меньшее значение массива, и вы помещаете его в первую позицию. Как вы можете видеть, я напечатал его в таблице, чтобы сделать его более смешным, но здесь возникает мой вопрос, я хочу поставить задержку в конце каждого цикла, где я выделяю значения, которые я собираюсь обменивать, но для некоторых разум просто организует всю таблицу, а затем делает ее вместо того, чтобы идти шаг за шагом.


Теперь я собираюсь продолжить, чтобы объяснить немного мой код ^^ и:

Если нажать на «Перезагрузка», вы получите новую кучу случайных чисел, и если вы нажмете в разделе «Выбор» массив станет упорядоченным.

Функции:

  • generate: генерировать i число со значением от 0 до j.
  • prinTable: распечатать таблицу.
  • renderDots: добавляет стили в точках, которые соответствуют значениям массива.
  • seleccion: выполнить метод «Выбор» для организации массива.
  • highlight: добавляет стили в точках, которые будут заменены на ЭТОТ цикл, а также удалить стили выделения остальных точек.

Я хотел бы получить аффект, как это:

enter image description here

+0

Вы не можете использовать setTimeout? – pethel

+0

Если вы хотите отложить содержимое для цикла, поместите содержимое цикла for внутри функции и вызовите эту функцию внутри цикла с помощью setTimeout. – vikas

+0

Он не работает ни – nais

ответ

1

Вы можете использовать функцию setInterval вместо for цикла:

function seleccion(table){ 
    var ordenados = 0; 
    var timer = setInterval(renderOneStep, 300) 

    function renderOneStep(){ 
    if (ordenados < table.length){ 

     // do all the calculations 

     ordenados++; 
    } else { 
     clearInterval(timer); 
    } 
    } 
} 

The renderOneStep обновления функций один колонка. Он называется каждые 300 мс.

См. Обновленный jsfiddle.