2016-04-03 5 views
0

Я хочу показать простое загружаемое сообщение перед сортировкой, но дисплей изменится с ни одного на блок после сортировки, даже если я вызываю сортировку после. Я даже попытался использовать setTimeout (2 секунды), чтобы изменить отображение, а затем вызвать фиктивную функцию для сортировки материала.style.display change after Array Sort

function sort(i) { 
    document.getElementById("loading").style.display = "block"; 
    array.sort(function(a, b) { 
     return a[i].localeCompare(b[i]); 
    }); 
} 
+0

Можете ли вы поделиться исполняемым демо/фрагментом или [JSFiddle] (https://jsfiddle.net/)? – Rayon

ответ

1

Браузеры не спешат перерисовки страницы в то время как JS занят рабочий (в предположении, что, вероятно, будет другой DOM изменения, которые они должны партия вместе для перерисовки).

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

Переведите вызов на array.sort в функцию и вызовите ее после задержки (например, с помощью setTimeout или requestAnimationFrame).

+0

Использование setTimeout действительно сработало, мне просто пришлось поместить функцию внутри параметра вместо вызова функции. Количество миллисекунд было 0. Спасибо! –