使用javascript中的数组向左循环css div
这段代码直接指向数组的最后一个位置,我想要的是迭代或循环遍历它们,然后在最后一个位置转到数组的第一个位置。我尝试了其他方法,但它给了我一个错误,在firefox中解析。这是代码小提琴 正文: Css: 此代码不起作用:使用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
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循环。