Я нашел временное решение.Теперь я могу запустить и остановить перезагрузку документа ... но, когда я дважды нажимаю кнопку myStartFunction, я больше не могу остановить ее нажатием кнопки myStopFunction.
Итак, я решил 1проблема, хотя я не понимаю, что я сделал ... и создал еще одну.
Проблема, похоже, заключалась в ключевом слове "var". Я удалил "var" из переменной "reload".И я также добавил оператор return reload в блок кода myStartFunction.
Я не совсем понимаю, почему это работает, и я нахожу действительно странным, что мне пришлось сделать это таким образом.Но я нашел кое-что на другом сайте, где говорилось, что когда вы объявляете переменную без ключевого слова var в javascript, переменная становится глобальной переменной.Я подозревал, что это как-то связано с областями видимости или недоступной переменной, созданной setInterval.
Помните, что каждый вызываемый экземпляр функции 'setInterval' создает новый идентификатор, и нам нужен был способ доступа к вновь созданным идентификаторам 'setInterval' из каждого экземпляра, чтобы остановить его с помощью 'clearInterval'.
Итак, мы пошли от этого предложения @Lajos Arpad:
var myStartFunction = function () {
myStopFunction(); //Stop any previous unstopped interval
var reload = setInterval(loadDoc,1000);
}
К этому:
var myStartFunction = function () {
reload = setInterval(loadDoc,1000);
return reload;
}
var myStopFunction = function () {
console.log("Stop reloading the document " + reload);
clearInterval(reload);
}
reload = setInterval(loadDoc,1000);
document.getElementById("reloadBtn").addEventListener("click", myStartFunction);
document.getElementById("stopBtn").addEventListener("click", myStopFunction);
loadDoc();
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("chatlog").innerHTML = this.responseText;
}
};
xhttp.open("POST", "chatlog.txt", true);
xhttp.send();
}