clearTimeout setInterval不起作用。但在其他剧本中呢?

时间:2017-07-27 23:07:53

标签: timer setinterval cleartimeout

我希望这个动画在整个页面持续时间内反复循环,但由于某种原因,clearTimer不能完成这项工作。或者我有一个循环错误的想法,清除计时器会在函数被授予时产生一个循环。

<script>
(function () {
var a1;
a1 = setTimeout(anim1,9000);

var a2;
a2 = setTimeout(anim2,10000);

var a3;
a3 = setTimeout(anim3,11000);

var a4;
a4 = setTimeout(anim4,12000);

function anim1() {
document.getElementById("tx1").animate([
  { transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})
}

function anim2() {
document.getElementById("tx2").animate([
{ transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})
}

function anim3() {
document.getElementById("tx3").animate([
 { transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})
}

function anim4 () {
clearTimeout(a1);
clearTimeout(a2);
clearTimeout(a3);
clearTimeout(a4);

}
})();


</script>

我看不出任何问题,同一个脚本在另一个文件中运行......

我只是希望动画基本上循环。但它运行一次,然后死亡,我认为cleartimeout不是问题。 ???

2 个答案:

答案 0 :(得分:0)

找到一个解决方法尽管如此我仍然不确定是否正确清除了计时器。但是它完成了这项工作所以现在一定要好了...感谢你们的帮助...

继承人的脚本..

<script>


window.onload=function start() {
var a1 = setTimeout(anim1,9000);

var a2 = setTimeout(anim2,10000);

var a3 = setTimeout(anim3,11000);

var a4 = setTimeout(anim4,12000);

function anim1() {
document.getElementById("tx1").animate([
  { transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})

}

function anim2() {


document.getElementById("tx2").animate([
{ transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})

}

function anim3() {
document.getElementById("tx3").animate([
 { transform: "translateY(0px)"},
  { transform: "translateY(-10px)"}, 
  { transform: "translateY(0px)"}
], {
  duration: 1000,
})

}

function anim4() {
clearTimeout("a3")
clearTimeout("a1");
clearTimeout("a2");
clearTimeout("a4");
start();
}

}
</script>

答案 1 :(得分:-1)

您应该将setTimeout返回的值传递给clearTimeout函数。 在你的情况下,它应该是clearTimeout(a1)而不是clearTimeout(anim1),依此类推。