JavaScript代碼執(zhí)行的作用域順序問題?
問題描述
var mark2=true;$('.right').click(function(){
if(mark2){ move(1); mark2=false;} })
function move(obj){
obj.animate({ width: arrW[index], height: arrH[index], opacity: arrO[index], left: arrL[index], top: arrT[index]},500,function(){ mark2=true;})}
點(diǎn)擊$('.right') 執(zhí)行move函數(shù),主要是為了給obj元素添加動(dòng)畫,為了防止$('.right')點(diǎn)擊的頻率過(guò)快,讓動(dòng)畫疊加,所以就用 mark2來(lái)控制,當(dāng)動(dòng)畫執(zhí)行完成后,也就是500毫秒后mark才為true,點(diǎn)擊$('.right')才執(zhí)行,否則不執(zhí)行,但是我有一個(gè)疑問,就是當(dāng)點(diǎn)擊速度大于500毫秒的時(shí)候,if語(yǔ)句中的mark都沒有執(zhí)行的機(jī)會(huì),又是重新一次點(diǎn)擊了,那不是一直疊加動(dòng)畫了嗎?因?yàn)閙ark一直為true,好像我這個(gè)理解是錯(cuò)誤的,因?yàn)槌绦蚴悄苷?zhí)行的,所以希望大神指點(diǎn)一下,程序的執(zhí)行過(guò)程
問題解答
回答1:我理解你的問題的核心是 點(diǎn)擊速度大于500ms,是這樣的,只有在同一個(gè)元素上相繼觸發(fā)了mousedown mouseup事件后才會(huì)觸發(fā) click事件。 觸發(fā)click事件后才會(huì)執(zhí)行move()
所以你考慮的超時(shí)的情況是不會(huì)發(fā)生的。
回答2:你如果想用變量控制,最好把mark2移到最上面,容易看懂點(diǎn)。流程是這樣的:如果你: 點(diǎn)擊right -----》運(yùn)行異步動(dòng)畫-----》mark2 = false ----(0.5s后)----》mark2 = true;
所以不管你怎么點(diǎn),大于0.5s還是小于0.5s,除非動(dòng)畫已經(jīng)運(yùn)行完使得mark2為true,不然if條件那里根本進(jìn)不來(lái)
相關(guān)文章:
1. 怎么在網(wǎng)頁(yè)中設(shè)置圖片進(jìn)行左右滑動(dòng)2. shell - Update query wrong in MySQL3. javascript - 新浪微博網(wǎng)頁(yè)版的字?jǐn)?shù)限制是怎么做的4. node.js - mysql如何通過(guò)knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)5. mysql 插入數(shù)值到特定的列一直失敗6. python 合并dict7. 360瀏覽器與IE瀏覽器有何區(qū)別???8. javascript - 用jsonp抓取qq音樂總是說(shuō)回調(diào)函數(shù)沒有定義9. python - 在使用Pycharm時(shí)經(jīng)常看到如下的樣式,小括號(hào)里紅色的部分是什么意思呢?10. python - flask報(bào)錯(cuò)ValueError: invalid key ’nicknickname’
