Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как исключить селектор? (https://javascript.ru/forum/css-html/84417-kak-isklyuchit-selektor.html)

Yarus 04.09.2022 00:21

Как исключить селектор?
 
Добрый день форумчане, нужна ваша помощь. Суть вопроса такова: на странице есть несколько кнопок, на которые нужно нажать при помощи var buttons = document.querySelectorAll

Проблема в том, что у кнопки две позиции, вкл/выкл, определяются кнопки по селектору aria-label="start", нажатая кнопка имеет селектор aria-pressed="true", соответственно не нажатая кнопка имеет селектор aria-pressed="false".

Мне нужно, что бы команда нажимала только на те кнопки которые не активированы, т.е. второй селектор aria-pressed="false" и игнорировала кнопку если на ней есть селектор aria-pressed="true".

Я не великий знаток Java, только учусь, поэтому прошу тапками не закидывать. Пытался сделать вот так:

var buttons = document.querySelectorAll('[aria-label="start"].not[aria-pressed="true"]'); for(var i = 0; i <= buttons.length; i++) { buttons[i].click(); }


Но ничего не получилось, команда не работает. Помогите пожалуйста с кодом, как сделать правильно?

Заранее спасибо!

Yarus 04.09.2022 00:23

Еще буду отдельно благодарен, если поможете сделать так, что бы кнопки прожимались по очереди, c интервалом 0.5 секунды, пока не останется не нажатых. Спасибо!

Aetae 04.09.2022 00:54

async function pressButtons() {
  const delay = (ms, value) => new Promise(resolve => setTimeout(resolve, ms, value));
  
  const buttons = document.querySelectorAll('[aria-label="start"]:not([aria-pressed="true"])'); 

  for (const button of buttons) { 
    button.click(); 
    await delay(500);
  }
}

pressButtons();

Yarus 04.09.2022 01:13

Большое спасибо, проблема решена!


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