直到setTimeout()完成后才忽略新的输入
问题描述:
我有一个javascript函数,当你将鼠标悬停在图像上时,它会将该图像的ID更改为具有关键帧动画的图像,以便它飞行10秒钟然后返回到它开始的位置。此时,您应该可以再次鼠标滑过,并以同样的方式飞行。直到setTimeout()完成后才忽略新的输入
我的问题是我怎样才能让它忽略任何更多的鼠标悬停而飞来飞去?我有这样的事情现在:
<script>
function fly(element){
element.id="flynow";
setTimeout(function(){stopflying(element)}, 10000);
}
function stopflying(element){
element.id="";
}
</script>
答
我写我自己的测试功能,对于这一点,虽然我没有使用相同的输出方法,你的的onmouseover事件应该是相同的。
我所做的只是创建一个全局变量来存储一个布尔值。这表明你是否在飞行中。我假设你一次只想要1个元素,对吧?
我的代码:
var isFlying = false;
function fly(element){
if(!flying){
flying=true;
element.id="flynow";
setTimeout(function(){stopflying(element)} , 10000);
}
}
function stopflying(){
flying=false;
element.id="";
}
这应该只允许1种元素在同一时间飞,无论多少次的onmouseover会被称为。
答
如果您还没有调整超时毫秒,它似乎会忽略超时。
例如:
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
将不火的五大功能间隔1秒,但所有这些一次,并在1秒内他们都将同时响应,表现为如果超时已被忽略。
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 2000)
setTimeout("smoothscroll" , 3000)
setTimeout("smoothscroll" , 4000)
setTimeout("smoothscroll" , 5000)
会立即解雇他们,但他们会相隔一秒钟,这是期望的结果。
此现象是在循环中创建还是作为单个命令无关紧要。
希望这会有所帮助。
Nico
如何触发鼠标悬停? – Jon 2012-08-14 16:37:19
onmouseover =“fly(this);” – Sam 2012-08-14 16:54:09