运行 满足条件时使用 setInterval 和 clearInterval 的函数?
Running a function using setInterval and clearInterval when conditions are met?
我不确定这是否是执行此操作的最佳方法,或者即使我这样做是对的。我有一个可以打开和关闭的拨动开关,所以当它打开时,它会偶尔运行 autoAdmit() 函数,当它关闭时,它不应该是 运行 它。我应该怎么做?我不知道最好的方法是什么,所以我尝试了可能是最愚蠢的方法..
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') {
element.click();
}
}
}
document.addEventListener('DOMContentLoaded', function() {
var checkbox = document.querySelector('#auto-admit .mdc-switch__native-control');
function isChecked() {
if (checkbox.checked) {
clearInterval(autoAdmit)
setInterval(autoAdmit, 1000)
} else {
clearInterval(autoAdmit)
setInterval(autoAdmit, 10000000000000)
}
}
checkbox.addEventListener('change', function() {
isChecked();
});
}
);
1.the return setInterval 的值是一个数字(interval Id),当你想清除Interval 时,params 应该是interval Id。
2.if你不要autoAdmit,clearInterval就好了,不用setInterval很长的时间
3.i 不要像我认为的那样替换您的 autoAdmit 函数,不需要每次都为 'Admit' 元素查询选择(这不是什么大问题)。
let clickIntervalId = null;
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') {
element.click();
}
}
}
document.addEventListener('DOMContentLoaded', function() {
var checkbox = document.querySelector('#auto-admit .mdc-switch__native-control');
function isChecked() {
if (checkbox.checked) {
if(clickIntervalId) clearInterval(clickIntervalId);
clickIntervalId = setInterval(autoAdmit, 1000);
} else {
clearInterval(clickIntervalId);
}
}
checkbox.addEventListener('change', function() {
isChecked();
});
}
);
var timer = null
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') element.click();
}
}
document.addEventListener('DOMContentLoaded', function() {
let checkbox = document.querySelector('#auto-admit .mdc-switch__native-control')
checkbox.addEventListener('change', function(event) {
clearInterval(timer)
if(event.target.checked){
timer = setInterval(autoAdmit, 1000)
}
});
});
我不确定这是否是执行此操作的最佳方法,或者即使我这样做是对的。我有一个可以打开和关闭的拨动开关,所以当它打开时,它会偶尔运行 autoAdmit() 函数,当它关闭时,它不应该是 运行 它。我应该怎么做?我不知道最好的方法是什么,所以我尝试了可能是最愚蠢的方法..
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') {
element.click();
}
}
}
document.addEventListener('DOMContentLoaded', function() {
var checkbox = document.querySelector('#auto-admit .mdc-switch__native-control');
function isChecked() {
if (checkbox.checked) {
clearInterval(autoAdmit)
setInterval(autoAdmit, 1000)
} else {
clearInterval(autoAdmit)
setInterval(autoAdmit, 10000000000000)
}
}
checkbox.addEventListener('change', function() {
isChecked();
});
}
);
1.the return setInterval 的值是一个数字(interval Id),当你想清除Interval 时,params 应该是interval Id。
2.if你不要autoAdmit,clearInterval就好了,不用setInterval很长的时间
3.i 不要像我认为的那样替换您的 autoAdmit 函数,不需要每次都为 'Admit' 元素查询选择(这不是什么大问题)。
let clickIntervalId = null;
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') {
element.click();
}
}
}
document.addEventListener('DOMContentLoaded', function() {
var checkbox = document.querySelector('#auto-admit .mdc-switch__native-control');
function isChecked() {
if (checkbox.checked) {
if(clickIntervalId) clearInterval(clickIntervalId);
clickIntervalId = setInterval(autoAdmit, 1000);
} else {
clearInterval(clickIntervalId);
}
}
checkbox.addEventListener('change', function() {
isChecked();
});
}
);
var timer = null
function autoAdmit() {
for (let element of document.getElementsByTagName('span')) {
if (element.innerHTML === 'Admit') element.click();
}
}
document.addEventListener('DOMContentLoaded', function() {
let checkbox = document.querySelector('#auto-admit .mdc-switch__native-control')
checkbox.addEventListener('change', function(event) {
clearInterval(timer)
if(event.target.checked){
timer = setInterval(autoAdmit, 1000)
}
});
});