【发布时间】:2020-11-08 21:49:55
【问题描述】:
当用户单击按钮时,我希望一个功能不断发生,直到用户再次按下该按钮。 我尝试创建一个类似于下面的函数,但我陷入了无限循环,程序无法接受第二次用户点击,因此它可以关闭该功能并重置所做的更改。
function doThing(){
setBtnValue = "OFF"
if( setBtnValue !== "ON"){
setBtnValue = "ON"
while (setBtnValue="ON"){
//do this indefinitely
}
}
//perform this on second button click
if (setBtnValue !== "OFF"){
setBtnValue = "OFF"
// call function that will reset changes made to the element
}
}
【问题讨论】:
-
while(setBtnValue == "ON")
-
你想无限期地做的“这个”是什么?几乎可以肯定有更好的方法。
-
“我希望一个函数无限地发生,直到用户再次按下该按钮。”这在像浏览器这样的“单线程”环境中是不好的方法。 meta.stackexchange.com/questions/66377/what-is-the-xy-problem
-
你看,我有一个包含正方形的网格。我有一个函数可以在调用时绘制正方形随机颜色,现在我希望该函数在按下按钮时无限运行,然后在再次按下所述按钮时停止!这是我的小提琴(它在第 126 行有一个错误,因为它无法在第二个 if 语句中访问按钮值:jsfiddle.net/gkoyuptc/4
-
好吧,你需要给浏览器时间来渲染你对方形颜色的更改,所以你的“紧密”循环无论如何都会冻结它。考虑使用
requestAnimationFrame,测试方块是否应该改变,然后再改变它们。
标签: javascript while-loop infinite-loop