亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 2880 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號