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

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

js 回調函數問題

js 回調函數問題

九州編程 2019-04-10 20:47:42
為什么step2()里面的console.log($("#div1").width());顯示的不是500而是100回調函數不是等step1()執行完后再執行step2()嗎?那應該500呀html無標題文檔*{margin:0;padding:0;}#div1{width:100px;height:100px;line-height:100px;text-align:center;border:1px#000solid;}div1functionstep1(callback){$("#div1").animate({width:"500px"},1000);callback();}functionstep2(){$("#div1").animate({height:"500px"},1000);console.log($("#div1").width());}$(function(){$("input").on("click",function(){step1(step2);});})
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

首先要理解同步,異步的概念,這個自己Google。
jquery的animate是異步的,也就是說在代碼中,callback的執行并不會等待動畫執行完成在執行,而是在代碼animate執行完成就執行了。
javascript$("#div1").animate({
width:"500px"
},1000);
callback();
我舉個例子:
javascriptsetTimeout(function(){console.log(1);},1000);
console.log(2);
運行這個,輸出的是21而不是12。和上面是類似的原因。
                            
查看完整回答
反對 回復 2019-04-10
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

functionstep1(callback){
$("#div1").animate({
width:"500px"
},1000);//這句的意思是#div1寬度設置為500px,函數立即返回,不需要等待1000ms
callback();//執行上面這句立即會執行這一句,不會等到1000ms之后
}
不是變量的名字叫callback就是回調函數。
這樣寫才是運行完動畫之后(1000ms)才調用callback
functionstep1(callback){
$("#div1").animate({
width:"500px"
},1000,callback);
}
                            
查看完整回答
反對 回復 2019-04-10
  • 2 回答
  • 0 關注
  • 342 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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