Я хочу анимировать вставку сортировки с divs, но она меняет только 2 места divs и после этой остановки анимации. Анимация отлично работает с одним для loop.So это из-за цикла или я ошибаюсь?Вставка сортировки анимации jquery
<body>
<button onclick="func1()">Click</button>
</body>
<script>
var arr = [4, 7, 1, 9, 8, 13, 6, 11];
function showarray() {
for (var i = 0; i < arr.length; i++) {
var divSort = document.createElement("div");
divSort.style.width = 30 + "px";
divSort.style.height = 30 + "px";
divSort.style.background = "yellow";
divSort.style.display = "inline-block";
divSort.style.margin = "10px";
divSort.id = arr[i];
divSort.innerHTML = arr[i];
document.body.appendChild(divSort); }}
showarray();
function func1(){
for (var i=1;i<arr.length;i++){
var index = arr[i];
var j = i;
while (j > 0 && arr[j-1] > index){
arr[j] = arr[j-1];
j--;}
doSetTime(i,j);} }
function doSetTime(i,j) {
setTimeout(function() {
$("#" + arr[j]).insertBefore("#" + arr[i]);
}, i * 1000);}
</script>
Просьба работать фрагмент кода. –
@dummy Что ожидается результат 'while (j> 0 && arr [j-1]> index)'? – guest271314
@ guest271314, если наш элемент меньше элементов перед ним, тогда это ставит элемент в нужное место – dummy