【问题标题】:stop a forloop or function停止 for 循环或函数
【发布时间】:2018-10-28 08:58:46
【问题描述】:

我想要一些关于如何让 for 循环停止的建议 在20个数字被绘制到透视div之后。我试过停止 功能/清除间隔,设置超时等。最好的方法是什么 实现这一点,因为我坚持什么是最好的方法

enter code here 
  function lottoNumbers()
  {
    var lottoNums = [];

    for(var i=0; i <1 ; i++)
    {
      var temp =Math.floor(Math.random() * 80 + 1);
      if(lottoNums.indexOf(temp) == -1)

      {

        lottoNums.push(temp);
        document.getElementById('square' + temp).innerHTML = lottoNums[i];
                document.getElementById('square0').innerHTML = lottoNums[i];
      }
      else
      {
        i--;
      }
    }
  }

//test resizing div
function alterSize(type) {
 var targetDiv = document.querySelector("#square0");
 targetDiv.classList.add(type);
 setTimeout(function(){
  targetDiv.classList.remove(type);
  }, 2000)
}


/*
onload="setInterval(lottoNumbers, 3000);
*/
  </script>

</head>


<body bgcolor="lightblue" onload="setInterval(start, 3500)" >
  <h1><center>GENERATE LOTTO NUMBERS</center></h1>

【问题讨论】:

标签: javascript function for-loop logic


【解决方案1】:

这可以通过 for 循环来完成,但在我看来你想要一个 while 循环,因为你想继续循环:while(还没有绘制足够的乐透号码)。

while (lottoNums.length < 20) {
    //lottoNums.push(temp); and any other code you want to include in your loop
}

【讨论】:

  • 谢谢洛基,我会调查的,非常感谢
  • 嗨,洛基尝试了你所说的,但无法让它工作:(,当我尝试运行它时,控制台中没有错误。我一次绘制一个与它的 div 位置相对应的随机数例如,数字 2 放在 div 2 等这是我的代码笔的代码副本。codepen.io/anon/pen/RembEp
  • 查看了您的代码。有一些问题,但您最初问题的答案是您应该使用clearInterval 告诉setInerval 何时停止。见clearInterval
  • 我发现的其他问题是:1) var lottoNums = []; 应该被定义为全局而不是在函数内部,否则它会在每次添加另一个数字之前清除 lottoNums 数组。 2).innerHTML = lottoNums[i]; 应该是.innerHTML = temp;。 3)我建议在你的javascript中创建一个onload函数,而不是直接从onload属性调用setInterval
  • 谢谢你,我调查了一下并试一试:),是 forloop 还是 while 循环?
【解决方案2】:

正如rocky所说,在这种情况下,使用while循环而不是使用for循环会更合适,尝试使用以下逻辑示例,看看你是怎么做的。

var lottoNumbers = 0;
var lottoNumbersCondition = false;

while(lottoNumbersCondition == false){
//your code and logical proccess goes here..
//and then your conditions will look like this
 if(condition to add lotto number = true){
    lottonumbers++;
 }

 if(lottoNumbers == 20){
    lottoNumbersCondition = true;
 }

}

所以现在循环基本上会不断重复,没有数字限制,直到满足条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多