Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   document.querySelector.click() не срабатывает в цикле :( (https://javascript.ru/forum/css-html/79365-document-queryselector-click-ne-srabatyvaet-v-cikle.html)

Paul123321 29.01.2020 07:49

document.querySelector.click() не срабатывает в цикле :(
 
Здравствуйте! есть скрипт поиска определенных 5ти цифр в конце элемента (среди множества этих элементов), работает замечательно:

var d = document;
var a = [].map.call(d.querySelectorAll('span.ticket_id'),
function(el){
   var number = el.textContent.slice(-5); return number;
});
console.log(a);
var exit = a.includes("93411", 0);
if (exit) {
   alert('YEAH! Number is find!!!')
} else {
   document.querySelector(".refresh_btn").click();
};


Но как только засовываю его в цикл while, скрипт зацикливается, нажатие по кнопке не срабатывает и браузер виснет, хотя если добавить alertы на каждом шаге, все проходит в нужном порядке, я нуб в js, помогите(
Вот скрипт с циклом:

while (exit != true){
   var d = document;
   var a = [].map.call(d.querySelectorAll('span.ticket_id'),
   function(el){
      var number = el.textContent.slice(-5); return number;
   });
   console.log(a);
   var exit = a.includes("93411", 0);
   if (exit) {
      alert('YEAH! Number is find!!!')
   } else {
      document.querySelector(".refresh_btn").click();
   };
   var d = 0;
   var allInArray = [];
};

<span class="ticket_id">236978445435</span>
<span class="ticket_id">579673264252</span>
<span class="ticket_id">235357579579</span>
<span class="ticket_id">235357857957</span>
<span class="ticket_id">534645768832</span>
<div class="refresh_btn">Получить новые ticked_id</div>


При нажатии на "refresh_btn" элементы обновляются, и прилетают новые)

рони 29.01.2020 08:04

Paul123321,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

(function loop()
{
var d = document;
var a = [].map.call(d.querySelectorAll('span.ticket_id'),function(el){var number = el.textContent.slice(-5); return number;});
console.log(a);
var exit = a.includes("93411", 0);
if (exit) {alert('YEAH! Number is find!!!')} else {
document.querySelector(".refresh_btn").click();
window.setTimeout(loop, 1000)
};
})()

Paul123321 29.01.2020 15:35

Прошу прощения, вроде поправил :)
И да, спасибо большое, про этот вариант не подумал))


Часовой пояс GMT +3, время: 08:48.