我有一个javascript函数,当你将鼠标悬停在图像上时,它会将该图像的id更改为具有关键帧动画的id,因此它会飞行10秒钟然后返回到它开始的位置。此时你应该能够再次鼠标悬停,它会以同样的方式飞行。
我的问题是如何让它在飞来飞去时忽略任何鼠标悬停?我现在有这样的事情:
<script>
function fly(element){
element.id="flynow";
setTimeout( function(){stopflying(element)}, 10000 );
}
function stopflying(element){
element.id="";
}
</script>
答案 0 :(得分:1)
我为此编写了自己的测试函数,虽然我没有使用与您相同的输出方法,但onmouseover事件应该是相同的。
我所做的只是创建一个用于存储布尔值的全局变量。这可以告诉您是否在飞行途中。我假设你一次只想要一个元素飞行,对吗?
我的代码:
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被调用多少次。
答案 1 :(得分:0)
如果你也没有调整超时毫秒,它似乎忽略了超时。
例如:
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 1000)
不会同时触发5个功能,但是所有这些功能同时发出,并且在1秒内它们将同时响应,看起来好像超时被忽略了。
setTimeout("smoothscroll" , 1000)
setTimeout("smoothscroll" , 2000)
setTimeout("smoothscroll" , 3000)
setTimeout("smoothscroll" , 4000)
setTimeout("smoothscroll" , 5000)
会立刻开火,但他们会相隔一秒钟,这是理想的结果。
这种现象是在循环中创建还是作为单独的命令无关紧要。
希望这有帮助。
尼科