我对我正在做的一个项目有问题。我根本不是JS专家,所以我很抱歉,如果这是一个愚蠢的要求。
我有两个视频是在彼此之上的。当我调用函数“开关”时,它会发挥“静态”淡出效应,然后切换两个视频的访问性。
这一切都工作得很好,但是当我点击按钮非常快地调用函数时,“静态”效应就会消失,所有的东西都会开始失效。
这是我正在使用的代码。它切换类名以隐藏视频。
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是如此的“静态”淡出有时间淡出一点,使事情看起来更顺利。
有别的办法吗?这样我就可以不出故障就把它挂起来了?
发布于 2014-06-04 14:40:27
如果我明白-锁开关的工作时间和完成后解锁:
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);
}
}
}发布于 2014-06-04 14:38:48
试试这个:
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);
}
}这将防止在早期单击中开始的超时执行。
https://stackoverflow.com/questions/24040284
复制相似问题