Javascript 设置间隔为';我不会重复我的代码,但它只运行一次,我想知道为什么?

Javascript 设置间隔为';我不会重复我的代码,但它只运行一次,我想知道为什么?,javascript,css,for-loop,styles,setinterval,Javascript,Css,For Loop,Styles,Setinterval,这是它完美运行过一次的代码,但是setInterval不会重复第二次,或者说它假设的其他连续时间,这就是我想要的,例如,当它到达数组的最后一个位置时,返回到第一个位置等等,我非常感谢有人能帮助我 CSS: HTML: ok 脚本: var a=[b(),c(),d()]; function b(){ for (var i=0;i<700000;i++){document.getElementById("ok").style.left=(i)+"px";} alert(i); }; fu

这是它完美运行过一次的代码,但是setInterval不会重复第二次,或者说它假设的其他连续时间,这就是我想要的,例如,当它到达数组的最后一个位置时,返回到第一个位置等等,我非常感谢有人能帮助我

CSS:

HTML:

ok
脚本:

var a=[b(),c(),d()];

function b(){
for (var i=0;i<700000;i++){document.getElementById("ok").style.left=(i)+"px";}
alert(i);
};
function c(){
for (var i=0;i<20;i++){document.getElementById("ok").style.left=(i)+"px";};
alert(i);
}
function d(){
for (var i=0;i<5;i++){document.getElementById("ok").style.left=(i)+"px";alert(i)};
};
for(var i=0;i<a.length;i++){
setInterval(function(){a[i];if(i==a.length-1){i=0;};},1000);
}
var a=[b(),c(),d()];
函数b(){

对于(var i=0;i当您使用函数而不是使用局部变量i时,必须指定参数

此外,请使用如下函数指针:

var a = [ b, c, d ];

您的代码有几个问题。首先,您正在立即执行b()c()和d(),而不是在每个间隔上执行。此外,b()c()和d()不会导致任何类型的动画,因此for循环完全没有意义。然后,不必在结尾处执行for循环来包装间隔

基本css转换将添加动画:

这里是简化的:

var a = [700000, 20, 5];

function setLeftStyle(position) {
    document.getElementById("ok").style.left = position + "px";
    console.log(position);
}
var i = 0;
setInterval(function () {
    setLeftStyle(a[i]);
    i++;
    if (i == a.length) {
        i = 0;
    }
}, 1000);

你怎么知道它没有多次运行呢?在间隔中放一个日志。(还有,闭包循环问题)。我向你保证,setInterval一直在运行。你在错误地解释结果。你实际做的是立即执行a()b()和c()不幸的是,我不认为你的代码会做你希望它做的事情,因为for循环通常在浏览器渲染更新之前开始和结束,所以我认为没有理由修复它。
var a = [ b, c, d ];
var a = [b, c, d];

function b() {
    document.getElementById("ok").style.left = 700000 + "px";
    console.log(700000);
}

function c() {
    document.getElementById("ok").style.left = 20 + "px";
    console.log(20);
}

function d() {
    document.getElementById("ok").style.left = 5 + "px";
    console.log(5);
}
var i = 0;
setInterval(function () {
    a[i]();
    i++;
    if (i == a.length) {
        i = 0;
    }
}, 1000);
var a = [700000, 20, 5];

function setLeftStyle(position) {
    document.getElementById("ok").style.left = position + "px";
    console.log(position);
}
var i = 0;
setInterval(function () {
    setLeftStyle(a[i]);
    i++;
    if (i == a.length) {
        i = 0;
    }
}, 1000);