js 闭包,如何避免闭包,但是必须引入外部变量

我想写一个轮播的js

当点击按钮时显示下一张图片,我是通过css3的过渡属性去做的,动画执行完成之后,再将设置的过渡属性去掉。

因为是通过css3的过渡,因此去掉过渡属性,必须是在动画完成之后进行的

我先使用了setTimeout,这个不行,如果发生连续点击效果就会变乱。

之后使用了setIntveal    

var donghua = "";

function dianji(){

if(donghua){  clearInterval(donghua);  donghua = "";    }

donghua = setInterval(function(){

    console.log("1");

     clearInterval(donghua);  donghua = "";

},5*1000);

}

点击慢,或者时间设置的短,没问题,但是如果点击较快就可能会出现不断的进行循环,无法停止。

是因为 引入的是外部的变量,变量在变,点击过快的时候   清除不掉循环

该怎么做来避免这样的情况


咕咕问
浏览 2296回答 1
1回答

kumin

可以考虑让按钮失效在点击按钮后 将按钮设为禁用或者解除click事件 disabled=“disabled”新增加一个延时计时器  时间是动画完成所需的时间里面写上解除按钮禁用状态 或者重新绑定click事件
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript