JavaScript代码执行的作用域顺序问题?
问题描述
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;})}
点击$('.right') 执行move函数,主要是为了给obj元素添加动画,为了防止$('.right')点击的频率过快,让动画叠加,所以就用 mark2来控制,当动画执行完成后,也就是500毫秒后mark才为true,点击$('.right')才执行,否则不执行,但是我有一个疑问,就是当点击速度大于500毫秒的时候,if语句中的mark都没有执行的机会,又是重新一次点击了,那不是一直叠加动画了吗?因为mark一直为true,好像我这个理解是错误的,因为程序是能正常执行的,所以希望大神指点一下,程序的执行过程
问题解答
回答1:我理解你的问题的核心是 点击速度大于500ms,是这样的,只有在同一个元素上相继触发了mousedown mouseup事件后才会触发 click事件。 触发click事件后才会执行move()
所以你考虑的超时的情况是不会发生的。
回答2:你如果想用变量控制,最好把mark2移到最上面,容易看懂点。流程是这样的:如果你: 点击right -----》运行异步动画-----》mark2 = false ----(0.5s后)----》mark2 = true;
所以不管你怎么点,大于0.5s还是小于0.5s,除非动画已经运行完使得mark2为true,不然if条件那里根本进不来
相关文章:
1. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?2. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?3. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?4. django - python 2层文件夹导入5. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况6. javascript - nodejs调用qiniu的第三方资源抓取,返回401 bad token,为什么7. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();8. css - ul ol前边的标记如何调整样式呢9. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。10. python3.x - python 中的maketrans在utf-8文件中该怎么使用

网公网安备