Зациклить клик по кнопке через js с условием

Необходимо зациклить клик по кнопке через js и если объект пропал на странице то прекратить кликать.

Скажем так, заходим на страницу, видим кнопку с классом "button-red ng-star-inserted", отлично начинаем кликать с периодичностью 1.5 секунды и продолжаем до тех пор пока этот класс присутсвует на странице. Как только класс "button-red ng-star-inserted" пропал останавливаем скрипт.

вот модифицированные код который дали совет я его поставил но он продолжает кликать даже если объекта нет

var interval = setInterval(function(){
  var buttons = document.getElementsByTagName('button');
  for (var i = buttons.length - 1; i >= 0; i--) {
    var button = buttons[i];
    if(button.getAttribute('class') == 'button-red ng-star-inserted') {
        button.click();
    }
  }  
}, 1500);

Ответы (2 шт):

Автор решения: Rudi

Попробуй так..

var interval = setInterval(function(){
  var buttons = document.getElementsByTagName('button');
  var f = true;
  for (var i = buttons.length - 1; i >= 0; i--) {    
    var button = buttons[i];
    if(button.getAttribute('class') == 'button-red ng-star-inserted') {
        f = false;
        button.click();
    }
  }
  if(f) {
    clearInterval(interval);
    console.log("Кнопки не существует, или она не успела подгрузится за 1700мс, интервал остановлен! Кликать больше не будет!")
  }
}, 1700);// Необходимо подобрать время интервала потому, что загрузка может длиться более 1700мс тогда отработает остановка, а кнопка подгрузится позже

→ Ссылка
Автор решения: Pavel Nazarian

Если касательно конкрететно автодока, то вот рабочий пример с MutationObserver. Скрипт при появлении кнопки "показать еще" нажимает её. Можете прям в браузере в консоли проверить.

    document.querySelector('.center.ng-star-inserted .button-red.ng-star-inserted').click();
    
    let target = document.querySelector('.product-items');
    ​
    const config = {    
        childList: true,
        subtree: true
    };
    
    const clickBtn = function(mutationsList, observer) { 
      for (let mutation of mutationsList) {
        for(let node of mutation.addedNodes) { 
          if (node.className == 'button-red ng-star-inserted' ) node.click();
        }
      }
    }
    
    const observer = new MutationObserver(clickBtn);
    ​
    observer.observe(target, config);
→ Ссылка