首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetTimeOut问题

SetTimeOut问题
EN

Stack Overflow用户
提问于 2014-06-04 14:31:26
回答 2查看 111关注 0票数 0

我对我正在做的一个项目有问题。我根本不是JS专家,所以我很抱歉,如果这是一个愚蠢的要求。

我有两个视频是在彼此之上的。当我调用函数“开关”时,它会发挥“静态”淡出效应,然后切换两个视频的访问性。

这一切都工作得很好,但是当我点击按钮非常快地调用函数时,“静态”效应就会消失,所有的东西都会开始失效。

这是我正在使用的代码。它切换类名以隐藏视频。

代码语言:javascript
复制
function Switch(){
    if(videoNieuw.className == "show"){
        playNoise(1280, 720);
        btnswitch.className="controls now";
        setTimeout(function(){
            videoNieuw.className="hide";
            videoOud.className = "show";
        }, 500);

    }else if(videoOud.className = "show"){
        playNoise(1280, 720);
        btnswitch.className="controls then";
        setTimeout(function(){
            videoOud.className = "hide";
            videoNieuw.className="show";
        }, 500);
    }
}

setTimeout是如此的“静态”淡出有时间淡出一点,使事情看起来更顺利。

有别的办法吗?这样我就可以不出故障就把它挂起来了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-04 14:40:27

如果我明白-锁开关的工作时间和完成后解锁:

代码语言:javascript
复制
var lock = 0;
function Switch() {
    if(lock == 0) {
            lock = 1;
            if(videoNieuw.className == "show"){
                playNoise(1280, 720);
            btnswitch.className="controls now";
                setTimeout(function(){
                    videoNieuw.className="hide";
                    videoOud.className = "show";
                    lock = 0;
                    }, 500);

            }else if(videoOud.className = "show"){
                playNoise(1280, 720);
            btnswitch.className="controls then";

                setTimeout(function(){
                    videoOud.className = "hide";
                    videoNieuw.className="show";
                    lock = 0;
                    }, 500);
            }
     }
}
票数 0
EN

Stack Overflow用户

发布于 2014-06-04 14:38:48

试试这个:

代码语言:javascript
复制
var timeOut;

function Switch(){
    clearTimeout(timeOut); // Stop the currently running timeouts, if any
    if(videoNieuw.className == "show"){
        playNoise(1280, 720);
        btnswitch.className="controls now";
        timeOut = setTimeout(function(){ // Store a reference to the new timeout
            videoNieuw.className="hide";
            videoOud.className = "show";
        }, 500);
    }else if(videoOud.className = "show"){
        playNoise(1280, 720);
        btnswitch.className="controls then";
        timeOut = setTimeout(function(){ // Store a reference to the new timeout
            videoOud.className = "hide";
            videoNieuw.className="show";
        }, 500);
    }
}

这将防止在早期单击中开始的超时执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24040284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档