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

while()卡死了

while()卡死了

慕先生4543078 2017-08-04 17:03:39
我在写一个类似轮播的组件,一个容器中图片放大到一个值后换一个图片,继续放大,重复这个过程用了requireJS<script src="https://cdn.bootcss.com/require.js/2.3.4/require.js" data-main="js/main"></script> <div id="cover">     <div id="imgBox">         <img src="images/6979b974a51a5fa66c22db8fa9feff5c.jpg">     </div> </div>main.jsrequire(["./config"], function(){     require(["jquery"], function($){         require(["./carousel"], function(autoPlay){             var img = $("img");             autoPlay(img);         })     }); });carousel.jsdefine(function(){     var pathArr = [         "images/0fad76a6669a0bc9dcac0f2bbcfac612.jpg",         "images/6b44f9a15afb4b64a381595223cbd436.jpg",         "images/6979b974a51a5fa66c22db8fa9feff5c.jpg",         "images/e74b72fe6e3b58511faf41d89bc2ce38.jpg"     ];     var autoPlay = function(img){         var imgOriginWidth = img.width();         var imgFinalWidth = imgOriginWidth + 100;         var imgOriginHeight = img.height();         // 等比缩放         var imgFinalHeight = (imgFinalWidth * imgOriginHeight)/imgOriginWidth;         var i = 4;         var counter = 0;         // while(counter < i){             if(img.width() < imgFinalWidth){                 img.stop().animate({                     width: "+=100px",                     height: "+=" + (imgFinalHeight - imgOriginHeight) + "px",                     left: "-=50px",                     top: "-=50px"                 }, 1000, function(){                     currentIndex = pathArr.indexOf(img.attr("src"));                     img.attr("src", pathArr[currentIndex + 1]);                     img.css({                         width: imgOriginWidth + "px",                         height: imgOriginHeight + "px",                         left: "0px",                         top: "0px"                     });                     counter++;                     console.log("执行");                 });             }         //}     }     return autoPlay; })我在回调函数中递增了计数器啊,为什么还会卡死。
查看完整描述

1 回答

?
__innocence

TA贡献313条经验 获得超208个赞

我没有看你的逻辑,但是counter++;应该是写在if的外面。

如果程序没有进if里面,就死循环了

查看完整回答
1 反对 回复 2017-08-04
  • 慕先生4543078
    慕先生4543078
    如果是作用域的问题,counter会一直向外查找,改变的是while循环外的counter。 而每次循环计数器都自增,怎么会死循环呢? 回调函数每次在animate()完成后执行,counter的确自增成功了啊。
  • __innocence
    __innocence
    if img.width() < imgFinalWidth, 如果这个条件不成立,程序就没有执行if里面的东西,包括count++这一句,这样继续循环,就变成了死循环
  • 慕先生4543078
    慕先生4543078
    那也应该有4次打印输出,现在一次输出都没,直接卡死。
  • 1 回答
  • 0 关注
  • 2643 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信