Задать вопрос
@qpz

Почему не срабатывает callback?

Стоит задача выбрать комментарий, после того как подгрузятся все скрытые комментарии (подгружаются они тоже через js, кликом по кнопке). Но callback почему-то не хочет работать, комменты прогружается, а дальше ничего не происходит.

function showComments(callback) {
  let moreBtn = document.querySelector('.Z4IfV');
  if (moreBtn !== null) {
    setInterval(function() {
      moreBtn.click();
    }, 300);
  } else {
    callback();
  };
};

function markComment() {
  let comments = document.body.querySelectorAll(".gElp9 ");
  comments[25].style.color = 'red';
};

showComments(markComment);


Пост с комментариями
  • Вопрос задан
  • 437 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
AlexKeller
@AlexKeller
Потому что showComments() вызывается 1 раз. В этот момент кнопка есть. Она запомнена в переменной moreBtn. И когда вы setInterval создали, то она попала в замыкание. Она не ищется каждый раз, а используется уже запомненная. Чтобы зайти в ветку else надо хотя бы еще раз зайти в showComments. Но никто их больше не вызывает
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Потому что элемент .Z4IfV существует на странице. Ведь твой код это сначала проверяет, и только если этого элемента не будет, то будет вызван callback. И чтоб твой код сработал, тебе надо вызывать callback после того как загрузятся комменты, а значит тебе надо как-то подождать их загрузки, либо решать задачу как-то иначе. Например считаешь сколько комментариев до нажатия на кнопку, потом в интервале каждый раз перепроверяешь, если изменилось, то вызываешь callback.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы