我需要动画一些东西,但我的陈述没有效果。我的代码:
var movei=function(img){
img.setAttribute("src", "blank.png");
}
var comp=function() {
...
for(var k=0; k<i; k++) {
var img=document.getElementById(id(k,col));
img.setAttribute("src", "circ1.png");
timer=setTimeout(movei(img),1000);
...
}
}
我读了关于setTimeout
(setInterval
)的其他问题,但我找不到答案。
答案 0 :(得分:0)
尝试timer=setTimeout(function(){movei(img);},1000);
答案 1 :(得分:0)
如果要为单个元素设置动画,则应使用递归而不是循环。
以下代码描述了相同的内容:
var count = 0;
function getId(count) {
return "div_" + count;
}
function initTimer() {
setTimeout(function() {
count++;
var _id = getId(count);
var _el = document.getElementById(_id);
show(_el);
if (count < 7)
initTimer();
}, 1000);
}
function show(el) {
el.style.display = "block";
}
initTimer();
div {
display: none;
}
<div id="div_1">1</div>
<div id="div_2">2</div>
<div id="div_3">3</div>
<div id="div_4">4</div>
<div id="div_5">5</div>
<div id="div_6">6</div>
答案 2 :(得分:-2)
正如@deceze所写,你需要将调用更改为setTimeout,这样你就不会调用movei函数,而是传递函数'name'。然后你必须改变函数movei的行为,这样它才能获得图像的简单字符串名称,或者可以查找图像本身。
timer=setTimeout(movei,1000);
或(以非推荐的方式)
timer=setTimeout("movei(\"imgName\")",1000);