setTimeout,JavaScript,没效果

时间:2016-01-19 13:15:23

标签: javascript settimeout

我需要动画一些东西,但我的陈述没有效果。我的代码:

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);
        ...
    }
}

我读了关于setTimeoutsetInterval)的其他问题,但我找不到答案。

3 个答案:

答案 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);