Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript中的数组向左循环css div_Javascript_Css_Arrays_Html_Iteration - Fatal编程技术网

使用javascript中的数组向左循环css div

使用javascript中的数组向左循环css div,javascript,css,arrays,html,iteration,Javascript,Css,Arrays,Html,Iteration,这段代码直接指向数组的最后一个位置,我想要的是迭代或循环遍历它们,然后在最后一个位置转到数组的第一个位置。我尝试了其他方法,但它给了我一个错误,在firefox中解析。这是代码小提琴 正文: Css: 此代码不起作用: var times = []; for (var i = 0; i < 30000; i++) { times.push("\""+i+"px\""); } var move=times; i

这段代码直接指向数组的最后一个位置,我想要的是迭代或循环遍历它们,然后在最后一个位置转到数组的第一个位置。我尝试了其他方法,但它给了我一个错误,在firefox中解析。这是代码小提琴

正文:

Css:

此代码不起作用:

    var times = [];
    for (var i = 0; i < 30000; i++) {
        times.push("\""+i+"px\"");
 }   var move=times;             
         if(i == move.length-1) 
     {i=0;}
     else
     {i=i+1;};
document.getElementById("placeDiv").style.left=move[i];
通过上面的代码,我在firefox中发现了一个错误: 分析“left”的值时出错。声明已删除。

您需要在此处使用setTimeout。例如:

var times = ["2px", "20px", "30px", "12px", "20px", "200px", "20px"],
    move = 0,
    div = document.getElementById("placeDiv");

setTimeout(function next() {
    div.style.left = times[move++ % times.length];
    setTimeout(next, 1000)
}, 1000);
要循环数组值,使用%运算符非常有用

演示: 或设置间隔:

演示:您需要在此处使用setTimeout。例如:

var times = ["2px", "20px", "30px", "12px", "20px", "200px", "20px"],
    move = 0,
    div = document.getElementById("placeDiv");

setTimeout(function next() {
    div.style.left = times[move++ % times.length];
    setTimeout(next, 1000)
}, 1000);
要循环数组值,使用%运算符非常有用

演示: 或设置间隔:

演示:试试这个:

function sleep(millis, callback) {
    setTimeout(function()
            { callback(); }
    , millis);
}

var times = ["2px","20px","20px","12px","20px","2000px","20px"];
var move=times;     
var i=0;

(function foobar_cont(){
        if(i == move.length-1) {i=0;}
        else {i=i+1;};
        document.getElementById("placeDiv").style.left=move[i];
        sleep(1000, foobar_cont);
})();
试试这个:

function sleep(millis, callback) {
    setTimeout(function()
            { callback(); }
    , millis);
}

var times = ["2px","20px","20px","12px","20px","2000px","20px"];
var move=times;     
var i=0;

(function foobar_cont(){
        if(i == move.length-1) {i=0;}
        else {i=i+1;};
        document.getElementById("placeDiv").style.left=move[i];
        sleep(1000, foobar_cont);
})();

我采用了dfsq的原始答案,并添加了一些香料:

$(div).animate({left: times[move++ % times.length]}, 500);

我采用了dfsq的原始答案,并添加了一些香料:

$(div).animate({left: times[move++ % times.length]}, 500);

您的代码中有语法错误。这对我来说很有效,但是。。时间或转换对用户不可见。。使它变快

 <div id="placeDiv">ok</div>
 <script>
    var times = ["2px","2000px","200px","12px","20px","200px","2000px"];
    var move=times;             
    var i=0;
    if(i == move.length-1) 
    {i=0;}
    else
    {i=i+1;}
    document.getElementById("placeDiv").style.left=move[i];
 </script>

您的代码中有语法错误。这对我来说很有效,但是。。时间或转换对用户不可见。。使它变快

 <div id="placeDiv">ok</div>
 <script>
    var times = ["2px","2000px","200px","12px","20px","200px","2000px"];
    var move=times;             
    var i=0;
    if(i == move.length-1) 
    {i=0;}
    else
    {i=i+1;}
    document.getElementById("placeDiv").style.left=move[i];
 </script>

你想从中得到什么?它只运行一次。。那么你如何处理这个数组的值。。你应该使用一些计时器吗?动画,也许一个for循环是必要的,但即使如此,我也无法得到结果。尝试计时事件,你想用它得到什么?它只运行一次。。那么你如何处理这个数组的值。。你应该使用一些定时器吗?动画,也许一个for循环是必要的,但即使如此,我也无法得到结果。尝试计时事件有多快?如果你能用几个像素的div做高清?换句话说,一个行为768个div,列为1024个div的2d for循环。有多快?如果你能用几个像素的div做高清?换句话说,一个行为768 div、列为1024 div的2d for循环。