为了账号安全,请及时绑定邮箱和手机立即绑定

js for循环中如何延迟执行?

js for循环中如何延迟执行?

MMMHUHU 2018-10-19 14:15:02
想用js实现冒泡排序的可视化,但是for循环中的语句块没法延迟执行,导致没法做成动画效果。代码如下所示: for (var i = 0; i < childNodes.length; i++) {        for (var j = 0; j < childNodes.length - i -1; j++) {            if (childNodes[j].firstChild.nodeValue > childNodes[j+1].firstChild.nodeValue) {                temp = childNodes[j+1];                parentNode.replaceChild(childNodes[j],childNodes[j+1]);                parentNode.insertBefore(temp,childNodes[j]);            }        }    }有尝试用下面的方法设置延迟执行,但是这样的话,外层的for循环没有执行,导致内存for循环执行一次后就结束了...不知道有什么方法可以实现吗
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

你使用j来延迟不对,因为j是存在重复的情况的;
你可以定义多一个自增的变量x
var x=0;

for (var i = 0; i < childNodes.length; i++) {

    for (var j = 0; j < childNodes.length - i -1; j++) {

        (function(j){

            setTimeout(function(){

                if (childNodes[j].firstChild.nodeValue > childNodes[j+1].firstChild.nodeValue) {

                    temp = childNodes[j+1];

                    parentNode.replaceChild(childNodes[j],childNodes[j+1]);

                    parentNode.insertBefore(temp,childNodes[j]);

                }

            },x*1000);

        })(j);

        x++

    }

}


查看完整回答
反对 回复 2018-11-25
  • 1 回答
  • 0 关注
  • 2297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号