Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 创建一个反复循环的for循环=_Javascript_Arrays_Loops - Fatal编程技术网

Javascript 创建一个反复循环的for循环=

Javascript 创建一个反复循环的for循环=,javascript,arrays,loops,Javascript,Arrays,Loops,所以我有一个奇怪的问题(因为我可以使用伪代码来实现,但无法在实际代码中实现)—— 这个概念很简单-我需要一个for循环,当达到其最大“I”数时,它会再次将“I”还原为0,并反复创建一个循环- 虚拟代码: for(i=0;i<10;i++){ console.log(i); if(i === 10){ i = 0 } } (i=0;i)的{ e、 id=i }) //获取要在页面上填充的元素 var name=document.querySelector('p.name'); 变量日期=d

所以我有一个奇怪的问题(因为我可以使用伪代码来实现,但无法在实际代码中实现)——

这个概念很简单-我需要一个for循环,当达到其最大“I”数时,它会再次将“I”还原为0,并反复创建一个循环-

虚拟代码:

for(i=0;i<10;i++){
console.log(i);
if(i === 10){
i = 0
}
}
(i=0;i)的
{
e、 id=i
})
//获取要在页面上填充的元素
var name=document.querySelector('p.name');
变量日期=document.querySelector('p.date');
var评级=document.querySelector('.rating_stars');
var review=document.querySelector(“p.review\u content\u text”);
//反转数组-首先显示最新的评论(这取决于评论下载的位置)
var reviewBack=reviews.slice(0.reverse();
//启动循环-遍历每个数组-获取其详细信息并将其应用于元素
/**
*这就是我想永远重复的
* 
* **/ 
for(设i=0;i>>>>>>

好的,所以我找到了一个黑客和斜杠的方式来解决这个问题-但它不是干代码和不好的代码,但它的工作

这可能会使退浆效果更容易理解

reviewF(); // <<< this is the init function

  // this init2 function for the reviews waits until the reviews have run then 
  // calls it again
  setTimeout(function(){
    reviewF();
  }, reviews.length*1000)
  // this version of the innit doubles the number of reviews and calls it after that amount of time
  setTimeout(function(){
    reviewF();
  }, (reviews.length*2)*1000)

reviewF();//为什么不简单地将这个for循环嵌套在

var循环=真
做{

对于(i=0;i我认为重置循环就像在伪代码中设置“i=0”一样简单。因此,请尝试在for循环末尾的代码中输入以下内容:

    if(i === 10){
     i = 0;
    }

嗨,凯尔-谢谢你的回复-这是我已经尝试过但不起作用的东西,我相信可能是由于代码块的原因?谢谢你的建议我真的不太确定。你可以尝试移除头部的所有部分:因此它将是“for(;;){//code here}”。我认为这会使循环无限。嗨,凯尔-我相信从我所读的内容来看,这会使循环无限,但这样就无法知道你在哪个数组项上,并且一旦点击array.item.length,就可以再次将循环重置为0并重新开始。如果你有更多关于实现这一点的信息,那将是令人惊讶的,我们是ba再次检查if语句,您是否尝试将if语句放置在循环中的不同位置?对我来说,最明显的地方似乎是注释“/”应该创建一个无限循环。您也可以尝试“if(i===array.item.length){i=0;},但除此之外,恐怕我没有主意了,对不起!嗨,凯尔-在对上面的代码(不是伪代码)进行了一些挖掘之后,这似乎不是当前的问题-可能函数正在运行,并且可以在无限循环上运行,但是由于setTimeout函数在代码的其余部分之后运行,因此存在延迟-现在我试图使一个函数在循环或函数再次运行之前进入运行状态(为什么要费心处理变量?如前所述,一个带有
中断
的简单无限循环将以相同的方式工作。它完全可以工作。有时在更深的条件嵌套中,变量可以帮助我识别我正在中断的循环。在您的虚拟代码中,
for(i=0;iHi Shadow-这是正确的,是的-在实际代码中应该是/但是这是基于一个变量的,该变量是向后运行的数组的长度(这是由于数组长度随时间而变化),因此(i=0;i您的循环没有向后运行。循环只会在循环条件失败和循环退出之前的瞬间将
i
设置为数组长度。至于
setTimeout
从未执行的原因,看起来您从未释放过对事件循环的控制;JavaScript没有线程化,
setTimeout
无法执行NL除非运行的代码结束或以其他方式将控制权返回到事件循环(使用
await
Promise
相关内容等).HI Shadow-我已经对您所说的进行了一些调试-我认为我对这段代码采取的方法是错误的,或者问题对于所需的解决方案是错误的-相反-如何使上述函数在再次运行之前完整地运行-我只是用setTimeOut()尝试了一下但这并不成功——任何投入都会很好
var looping = True
do {
    for(i=0;i<10;i++){
        console.log(i);
    }

    if (someEndCondition) {
         looping = False;
    }
}
while (looping);
    if(i === 10){
     i = 0;
    }