javascript - 如何在执行脚本一段时间后暂停 javascript 然后继续?

标签 javascript

当用户滚动缩略图时,我正在尝试制作带有图像更改的 js 画廊。 我已经成功地使用了 css3 淡入动画来更改图像,它工作正常,但是如果我将光标悬停在 thumb1 上,不要等待动画完成并悬停在另一个缩略图上,图像会在没有动画的情况下发生变化。很难解释,因为我的英语不是最好的,所以我会给你我的代码。

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
<?xml-stylesheet type="text/css" href="#css21" media="screen"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html id="xhtml10S" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Window-target" content="_top" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>Untitled-1</title>
<style id="css21" type="text/css" media="screen">
html, body {
color : #405060;
font : normal normal normal 95%/1.5 Verdana, Tahoma, Arial, san-serif;
height : auto;
margin : 0;
padding : 0;
text-align : center;
width : auto; }
body {
background-color : #000000; }
div {
border : none;
margin : 0;
padding : 0; }
div#gscreen {
float : none;
height : 250px;
width : 100%;
clear : both;

-webkit-transition: background 1500ms ease-in 0ms; /* property duration timing-function delay */
-moz-transition: background 1500ms ease-in 0ms;
-o-transition: background 1500ms ease-in 0ms;
transition: background 1500ms ease-in 0ms;  }
</style>
<script type="text/javascript">


var imageGallery = ( function() {

var xelem = ( function( xTag ) {
var ua = ((( ie = document.all.tags( xTag )) && !!!( ff = document.getElementsByTagName( xTag ))) ? 1 : 0 );
var xObj = null || { 0 : ff, 1 : ie }[ ua ];
return xObj;
} );
return function imageGallery( tagX ) {
var xItem = xelem("div");
var xScreen = xItem["gscreen"];
var xImg = xelem( tagX );
var iLen = xImg.length;
for ( i = 0; !!( xImg[ i ] ); i++ ) {
xImg[ i ].onmouseover = function() {
var xIndex = Number( this.id.match(/\d+/)[ 0 ] );
xScreen.style.background = " url(" + this.src + ") no-repeat top center";

}
}
}
} )();
onload = function() {
imageGallery("img")
}
</script>
</head>
<body>
<div id="gscreen"></div>

<img id="i0" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSMMlTzBMWSeD6IrQCLTT7urbpXORjY_2vqmA_mFj6OJcsfsH-yuw" height="100" width="200" style="background-image='url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSMMlTzBMWSeD6IrQCLTT7urbpXORjY_2vqmA_mFj6OJcsfsH-yuw)'" alt="test images" />
<img id="i1" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSlGvpoCsCgGcX74IWG5YNmjULh1Q428frxtmabTCNM_aVKFGH9" style="background-image='url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSMMlTzBMWSeD6IrQCLTT7urbpXORjY_2vqmA_mFj6OJcsfsH-yuw)'" height="100" width="200" alt="test images" />
<img id="i2" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ3DluQXJW-4stVrHlArRc6gZnuxqmKKyheZsDWt-kGjvfjj43M" height="100" width="200" style="background-image='url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSMMlTzBMWSeD6IrQCLTT7urbpXORjY_2vqmA_mFj6OJcsfsH-yuw)'" alt="test images" />
<img id="i3" src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQDC56QxLfOgZyrX96BfPveif-dKlrDIwsB45uGlL3XicDL10EqlA" height="100" width="200" style="background-image='url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSMMlTzBMWSeD6IrQCLTT7urbpXORjY_2vqmA_mFj6OJcsfsH-yuw)'" alt="test images" />

</body>
</html>

所以,我想如果我在执行“onmouseover”后暂停 javascript 1500 毫秒,用户将无法在滚动另一个缩略图时再次执行该功能,我该怎么做?或者也许有更多的选项来修复图像变化效果?

感谢您的回答。

最佳答案

我会给 imageGallery 一个属性,例如 imageGallery.isReady = true; 当函数启动时,将该属性设置为 false。然后,在您的函数结束时,执行 setTimeout(function() {imageGallery.isReady = true;}, 1500);

调用函数时,只要检查是否imageGallery.isReady = true; 如果不是,则不执行该函数;如果是,则执行。

编辑:或者,您可以在函数启动时删除事件监听器,然后在 setTimeout();

之后再次添加它

关于javascript - 如何在执行脚本一段时间后暂停 javascript 然后继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257820/

相关文章:

javascript - 基本幻灯片

javascript - Silverlight 不正确地传递 JSON 对象?

javascript - 为什么我不能从同一个类中的另一个方法调用这个方法?

javascript - Google OAuth2来源不匹配

javascript - JS原型(prototype),小困惑

javascript - 使用 JSON 根元素可观察到的 Angular2

javascript - 基于复选框和 div id 和类的多个过滤器

javascript - 是否可以在 Protractor 测试下为chromedriver添加插件?

javascript - 单击 Materialize-css React 按钮内的图标会触发 onClick

javascript - React - this.props 看起来未定义