setinterval игнорирует условие if

110
04 февраля 2021, 11:10

Как по задумке должен работает код: "пока юзер внизу страницы функция LoadMessage обновляется и подгружает данные" и казалось бы на деле все работает, пока новые данные не будут подгружены, после того как новые данные подгрузились setInterval продолжает работать игнорируя условие. Помогите разобраться)

let block = document.getElementById("scroll");
var timerChat;
function LoadMessage() {
  let x = 6;
  $.ajax({
    type: "GET",
    url: "load_message.php",
    data:{load: x},
    success: function(data) {
      document.getElementById('chats').innerHTML = data;
      block.scrollTop = block.scrollHeight;
    }
  });
}
$('#scroll').scroll(function() {
 if (block.scrollHeight - block.scrollTop == block.clientHeight){
    timerChat = setInterval(function() {
      LoadMessage();
    }, 2500);
 }else {
   clearInterval(timerChat);
 }
});
Answer 1
let block = document.getElementById("scroll");
var timerChat = null;
function LoadMessage() {
  let x = 6;
  $.ajax({
    type: "GET",
    url: "load_message.php",
    data:{load: x},
    success: function(data) {
      document.getElementById('chats').innerHTML = data;
            block.scrollTop = block.scrollHeight;
    }
  });
}

$('#scroll').scroll(function() {
    if ((block.scrollHeight - block.scrollTop) == block.clientHeight){
        if (timerChat) {
            console.log(timerChat);
            clearInterval(timerChat);
            timerChat = null;
        }else{
            timerChat = setInterval(function() {
                LoadMessage();
            }, 2500);
        }
    }else {
        clearInterval(timerChat);
        timerChat = null;
    }
});

Просто нужно было проверять запущен ли timerChat или нет, если запущен то остановить и заново запустить)

Answer 2

Попробуйте строку:

if (block.scrollHeight - block.scrollTop == block.clientHeight) 

Переделать на:

if ((block.scrollHeight - block.scrollTop) == block.clientHeight)
READ ALSO
Как сделать log out

Как сделать log out

Хочу сделать logoutрегистрацию сам прописал в view а авторизацию использовал встроейный метод django

102
HTML5 drag and drop баг в chrome

HTML5 drag and drop баг в chrome

Я обнаружил странное поведение перетаскиваемой картинки в Chrome, тогда как в FIREFOX все работает отличноДело в том что при использовании метода...

115