成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript代碼執(zhí)行的作用域順序問題?

瀏覽:126日期:2023-06-09 17:25:02

問題描述

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)

標(biāo)簽: JavaScript
相關(guān)文章: