在javascript中逐步显示4张图像
Show 4 images step by step with effect in javascript
<!DOCTYPE html>
<html>
<head>
<style>
#steps img{
-webkit-transition: background-image 1.0s linear 0s;
transition: background-image 1.0s linear 0s;
float: left;
display: none;
height: 50px;
width: 50px;
}
</style>
<script>
var i = 0;
var elem;
function nextStep(){
i++;
var img = document.createElement("img");
img.src = "image"+i+".png"
img.width = "50px";
img.height = "50px";
img.id = "step" + i;
document.getElementById("steps").appendChild(img);
elem = document.getElementById(img.id);
elem.style.display = "inline-block";
elem.style.opacity = "0";
setTimeout(slide(),5000);
}
function slide(){
elem.style.opacity = "1";
if(i > 3){
clearTimeout(slide());
clearTimeout(nextStep());
}
setTimeout(nextStep(),5000);
}
</script>
</head>
<body>
<h1>Steps</h1>
<div id="steps">
<script>
nextStep();
</script>
</div>
<p id="text"></p>
</body>
</html>
我有 4 张图像,我想使用 css3 效果逐步创建和显示它们,它首先执行 nextStep(( 函数,该函数创建 img 子级以div 并更改显示和不透明度。调用 slide(( 后,不透明度设置为 1,我们再次调用 nextStep((。当我> 3 时,我们停止显示。当我测试它时,它会立即显示 4 张图像而没有任何影响
编辑:
<!DOCTYPE html>
<html>
<head>
<style>
#steps img{
/*
-webkit-transition: background-image 1.0s linear 0s;
transition: background-image 1.0s linear 0s;
*/
float: left;
display: none;
height: 50px;
width: 50px;
}
</style>
<script>
var i = 0;
var elem;
//var slide;
//var nextStep;
function nextStep(){
i++;
var img = document.createElement("img");
img.src = "image"+i+".png"
img.width = "50px";
img.height = "50px";
img.id = "step" + i;
document.getElementById("steps").appendChild(img);
elem = document.getElementById(img.id);
elem.style.display = "inline-block";
//elem.style.opacity = "0";
setTimeout(slide(),2000);
}
function slide(){
//elem.style.opacity = "1";
if(i < 3){
//clearTimeout(slide());
//clearTimeout(nextStep());
setTimeout(nextStep(),2000);
}
}
</script>
</head>
<body>
<h1>Steps</h1>
<div id="steps">
<script>
document.onload = function (){
nextStep();
};
</script>
</div>
<p id="text"></p>
</body>
</html>
在对 DOM 执行任何操作之前,您应该始终等待 DOM 完全加载。使用 document.onload 在加载文档时执行脚本:
<script>
document.onload = function (){
nextSteps()
};
</script>
编辑:您的代码存在更多问题。此处不需要clearTimeout
函数。另外,你没有正确使用它。引用w3schools的文档:
clearTimeout(( 方法清除使用 setTimeout(( 设置的计时器 方法。
由 setTimeout(( 返回的 ID 值用作 clearTimeout(( 方法。
注意:为了能够使用 clearTimeout(( 方法,您必须使用 创建超时方法时的全局变量:
myVar = setTimeout("javascript function",milliseconds);
然后,如果 函数尚未执行,您将能够停止 通过调用 clearTimeout(( 方法执行。
您的滑动函数应如下所示:
function slide(){
elem.style.opacity = "1";
if(i < 3){
setTimeout(nextStep,5000);
}
}
编辑 2 :
setTimeout
需要对函数的引用,例如不带括号的函数名称:
setTimeout(nextStep,5000);
nextStep
是对函数
的引用 nextStep()
是函数在执行后返回的结果(在本例中未定义(
相关文章:
- 在javascript中逐步显示4张图像
- 单击另一张图像,显示一张图像几秒钟
- 灯箱只显示第一张照片
- 粘性滚动显示两张图像
- 正在开发内存匹配游戏 - 您能否以不同的方式显示一张图像
- 如何在我的页面上自动显示第一张谷歌图片
- Facebook Like Box只显示一张脸
- 如果输入为空,则显示一张图片或另一张图片
- 寻找一个JS滑块插件,它支持一次显示多张幻灯片,以及不同宽度的幻灯片
- 单击上一张图像,显示一张新图像
- 在页面加载时,不是显示第一张幻灯片,而是显示最后一张幻灯片不到一秒钟
- 简单幻灯片显示第一张幻灯片完全淡出
- Javascript幻灯片只显示第一张图片,按钮不起作用
- jQuery循环插件似乎先显示第二张图片
- 根据一天中的时间,每分钟显示一张图像
- 在性能方面,在一个页面上显示1000张图片的最佳方法是什么?
- 标签式谷歌地图,显示第一张地图而不是第二张地图
- 使用jQuery在Bootstrap Carousal中显示同一张幻灯片上的多个项目
- Javascript内容滑块只显示第一张幻灯片
- 在Nouislider中只显示一张幻灯片