当循环条件为假时脚本执行不会停止
Script execution doesn't stop when loop condition is false
最近我写了一个用户脚本,用于在 csgojustice 上进行自动投注。这是:
var delay = 10000
var btBet = document.getElementById("make-bet");
var loop = true
var input=document.createElement("input");
input.type="button";
input.value="Start";
input.onclick = start;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);
var input=document.createElement("input");
input.type="button";
input.value="Stop";
input.onclick = stop;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:130px;");
document.body.appendChild(input);
function start() {
loop = true;
roll();
}
function roll() {
if (loop === true) {
btBet.click();
refreshIntervalId = setInterval(roll2, delay); }
}
function roll2() {
btBet.click();
clearInterval(refreshIntervalId)'
roll()
}
function stop() {
loop = false;
}
问题:
当我点击开始按钮时,它开始执行。但是当我点击停止按钮时,它仍然执行。但是有if (loop === true)
但是当loop
是false
的时候还不停
我似乎无法遇到你的问题 - 这个脚本对我来说工作得很好。
但我已经解决了一些问题。
- 不需要
roll2
函数。
- 如果
setInterval
可以用setTimeout
代替,这样就不用每次都清除了
- 你应该
clearTimeout
调用 stop
jsFiddle
var delay = 1000;
var btBet = document.getElementById("make-bet");
var loop = true;
var input=document.createElement("input");
input.type="button";
input.value="Start";
input.onclick = start;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);
var input=document.createElement("input");
input.type="button";
input.value="Stop";
input.onclick = stop;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:130px;");
document.body.appendChild(input);
function start() {
loop = true;
roll();
}
function roll() {
if (loop === true) {
console.log("roll");
refreshIntervalId = setTimeout(roll, delay);
}
}
function stop() {
loop = false;
clearTimeout(refreshIntervalId);
}
最近我写了一个用户脚本,用于在 csgojustice 上进行自动投注。这是:
var delay = 10000
var btBet = document.getElementById("make-bet");
var loop = true
var input=document.createElement("input");
input.type="button";
input.value="Start";
input.onclick = start;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);
var input=document.createElement("input");
input.type="button";
input.value="Stop";
input.onclick = stop;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:130px;");
document.body.appendChild(input);
function start() {
loop = true;
roll();
}
function roll() {
if (loop === true) {
btBet.click();
refreshIntervalId = setInterval(roll2, delay); }
}
function roll2() {
btBet.click();
clearInterval(refreshIntervalId)'
roll()
}
function stop() {
loop = false;
}
问题:
当我点击开始按钮时,它开始执行。但是当我点击停止按钮时,它仍然执行。但是有if (loop === true)
但是当loop
是false
的时候还不停
我似乎无法遇到你的问题 - 这个脚本对我来说工作得很好。
但我已经解决了一些问题。
- 不需要
roll2
函数。 - 如果
setInterval
可以用setTimeout
代替,这样就不用每次都清除了 - 你应该
clearTimeout
调用stop
jsFiddle
var delay = 1000;
var btBet = document.getElementById("make-bet");
var loop = true;
var input=document.createElement("input");
input.type="button";
input.value="Start";
input.onclick = start;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);
var input=document.createElement("input");
input.type="button";
input.value="Stop";
input.onclick = stop;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:130px;");
document.body.appendChild(input);
function start() {
loop = true;
roll();
}
function roll() {
if (loop === true) {
console.log("roll");
refreshIntervalId = setTimeout(roll, delay);
}
}
function stop() {
loop = false;
clearTimeout(refreshIntervalId);
}