【发布时间】:2015-10-25 14:36:58
【问题描述】:
我希望对我的 div 进行排序,但在这段代码中它只经过一次 for 循环。我怎样才能让它结束两个循环和我的 div 排序?
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 func() {
for (var j = (arr.length - 1); j >= 0; j--) {
for (var i = 1; i <= j; i++) {
if (arr[i] < arr[i - 1]) {
doSetTimeout(i, j);
};
};
}
function doSetTimeout(i, j) {
setTimeout(function() {
$("#" + arr[i]).insertBefore("#" + arr[i - 1]);
}, j * i * 100);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="func()">Click</button>
【问题讨论】:
-
所以您想执行动画排序还是只对
div元素进行排序?你拖延的意义何在 -
@RamisWachtler 动画排序。我想用延迟来展示算法是如何工作的
-
请正确解释预期行为。不起作用的代码不能代替解释您希望该代码做什么
-
@charlietfl 代码有效,但它只执行第二个循环而不是第一个循环。但我需要两个循环才能使我的 div 排序
标签: javascript jquery for-loop settimeout