我需要无限循环(或其他选择)来增加我的变量,当这个变量有一定的值(100或更多)时,执行这个循环停止并等待用户单击。在那之后,循环继续。
就像这样:
var speed = 0;
for(i=0; i>=0; i++){
speed += 13;
if(speed >= 100){
// wait for this click
$(“.el”).click(()=> {
// some code
speed = 0;
});
}
//then continue loop with - speed = 0
}
写在javascript上
也许可以用承诺、等待或诸如此类的东西来实现,但我不能。如果有人帮助我,我很感激,谢谢!
发布于 2020-08-21 06:41:12
setTimeout似乎是这份工作的合适人选。
要关闭单击,请使用jQuery的.off()
方法。另外,只附加一次回调的.one()
方法
const $btn = $("#btn");
const $log = $("#log");
let speed = 0;
let tO = null;
function clickHandle( evt ) {
console.log("CLICKED"); // Do something here
// ....
$btn.off("click", clickHandle); // Prevent further clicks
loop(); // restart the loop!
}
function loop() {
if (speed >= 100) {
clearTimeout(tO);
$btn.one("click", clickHandle); // Allow one click only
speed = 0; // Reset speed to 0
return; // Exit here, we're at >=100
}
speed += 13;
$log.text(speed);
tO = setTimeout(loop, 150); // Do +13 every 150ms
}
// init:
loop();
<button id="btn" type="button">Restart</button>
<div id="log"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
发布于 2020-08-21 07:16:04
我没有亲自使用过JQuery,但这是递归完成的代码。
let speed = 0;
document.querySelector(".el").addEventListener("click", () => {
// some code
speed = 0;
// this restarts the loop
loop()
}, false)
function loop() {
speed += 13;
if (speed < 100) {
loop();
}
}
// to start the loop
loop();
<button class="el">Click ME</button>
https://stackoverflow.com/questions/63524572
复制