2016-04-03 17 views
0

並べ替えの前に単純な読み込みメッセージを表示したいのですが、並べ替え後に並べ替えを呼び出しても、並べ替え後に表示がブロックからブロックに変わります。私はsetTimeout(2秒)を使って表示を変更してから、ダミー関数を呼び出して、ソートをソートしようとしました。style.display after配列の並べ替え

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

ブラウザは、(おそらく、DOMは、彼らが再描画のために一緒にバッチする必要があることに変更他があることを前提に)JSが忙しく働いている間、ページを再描画するために急いではありません。

イベントループを解放して、2つのステートメント間で再ペイントする必要があります。

array.sortへの呼び出しを関数に移動し、遅れて呼び出します(例:setTimeoutまたは​​)。

+0

実際に働いたsetTimeoutを使うと、関数を呼び出すのではなく、関数の中に関数を入れるだけでした。ミリ秒は0でした。ありがとう! –