<!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 child to div并更改显示和不透明度。在调用slide()之后,不透明度设置为1,我们再次调用nextStep()。当我&gt; 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>
答案 0 :(得分:0)
在对DOM执行任何操作之前,应始终等待DOM完全加载。使用document.onload在加载文档时执行脚本:
<script>
document.onload = function (){
nextSteps()
};
</script>
修改:
您的代码存在更多问题。此处不需要clearTimeout
功能。另外,你没有正确使用它。来自w3schools的文档引用:
clearTimeout()方法清除使用setTimeout()设置的计时器 方法
setTimeout()返回的ID值用作参数 clearTimeout()方法。
注意:为了能够使用clearTimeout()方法,您必须使用a 创建超时方法时的全局变量:
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()
是函数执行后返回的结果(在本例中为undefined)