Javascript - 需要重复数组迭代,每x秒更改一次元素的类
Javascript - Need to repeat array iteration that changes element's class every x seconds
我目前需要使用javascript继续循环遍历数组。 以下是我能想到的单向方法,但 1-它不起作用,2- 想知道是否有更优化或紧凑的方法来实现这一目标?
var myArray=[1,2,3,4]
for (var i=0; i<myArray.length; i++)
{
console.log(i + 'hi')
if (i==3)
{
i=0;
}
}
根据每
10 秒要执行的操作的注释:
// IIFE to keep the variable i contained to a new scope
+function ( ) {
var DURATION = 10;
var i = 0;
setInterval( function ( ) {
// Do something every ten seconds
console.log( arr[i] );
// Increment i (mod array.length)
i = (i + 1) % array.length;
}, DURATION*1000 );
}();
您可以使用模运算符
var i = 0;
// loop forever
while(true) {
console.log(myArray[i] + 'hi');
// i % 4 is the remainder when dividing i by 4
// so this will cause i to be 0, 1, 2, 3, 0, 1, ...
i = (i + 1) % myArray.length;
}
也许这可以工作。
function foo() {
var myArray = [1,2,3,4],
i,
len = myArray.length;
for (i = 0; i < len; i += 1) {
console.log(i + 'hi');
}
}
while(true) {
setTimeout(foo, 10000);
}
很高兴
更多地了解您的确切需求,但这是一种方法:
function loop(arr) {
for (var i=0; i<arr.length; i++) {
console.log('hi');
}
// OP wants a 10 second delay
setTimeout(function () { loop(arr); }, 0);
}
编辑:
由于它在评论中说您想要 10 秒的延迟,我们可以将设置超时中的 0 更改为 10000。与无限循环相比,使用 setTimeout 的好处是它允许脚本中发生其他事件驱动的事情。
查看以下内容:
var myArray=[1,2,3,4]
for (var i=0; i<myArray.length; i++)
{
console.log(myArray[i] + 'hi')
if (i==3)
{
i=0;
}
}
你错过了myArray[i]
另一个问题是这是一个无限循环,因为如果i == 3
那么它会将"i"重置为零,导致您的循环永远不会达到 4 即。[1,2,3,4] ...只需删除 if 语句即可。
相关文章:
- 当元素可见时,jQuery滚动函数会触发一次
- 使用 JavaScript 一次为一个元素设置多个属性
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 创建一次角度元素
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 对同一类中的所有元素单击一次
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 元素在JavaScript函数中只更改过一次
- 我试图用jQuery让每个HTML5元素一次淡出一个
- 仅追加元素一次
- 如何使用 Jquery 获取 XML 文件,并在每次加载时以随机顺序显示元素一次
- jQuery fadeIn 元素一次一个 onClick
- 如何仅访问数组中的一对元素一次
- 哪个更具性能:同时调用array.prototype.push和所有元素,或者推送每个元素一次
- 在页面加载后计数元素一次
- 如何循环遍历一组jQuery元素—一次4个
- 渲染全局元素一次
- 仅在鼠标左键后显示元素一次
- 同一块元素一次显示一个,并可验证命名
- 仅将键:值对附加到我的数组元素一次