Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   queryselector - "сложный" запрос. (https://javascript.ru/forum/events/84416-queryselector-slozhnyjj-zapros.html)

Andy_kun 03.09.2022 20:39

queryselector - "сложный" запрос.
 
Никак не могу осилить, как писать запросы сложнее, чем поиск просто по имени класса для queryselector().
Помогите пожалуйста с примером, как должен выглядеть запрос для queryselector() - вот к примеру для такого элемента:

<button type="button" id="compactPitch" class="sc-fzoYHE sc-fznLPX dDZlPu">


То есть найти именно точно совпадение все трех атрибутов и их значений ?

рони 03.09.2022 21:17

Andy_kun,
let button  = document.querySelector(`[type="button"][id="compactPitch"][class="sc-fzoYHE sc-fznLPX dDZlPu"]`);

рони 03.09.2022 21:18

Andy_kun,
https://learn.javascript.ru/css-selectors

Aetae 03.09.2022 23:57

Тут достаточно #compactPitch.
Id - уникален на станице.

Также к явно сгенерированным классам типа dDZlPu не следует привязываться никогда. Эти классы изменятся в любой момент, при следующем обновлении фронта.

Andy_kun 03.09.2022 23:59

Цитата:

Сообщение от рони (Сообщение 547750)
Andy_kun,
let button  = document.querySelector(`[type="button"][id="compactPitch"][class="sc-fzoYHE sc-fznLPX dDZlPu"]`);

Спасибо!

Andy_kun 04.09.2022 00:00

Цитата:

Сообщение от Aetae (Сообщение 547752)
Тут достаточно #compactPitch.
Id - уникален на станице.

Также к явно сгенерированным классам типа dDZlPu не следует привязываться никогда. Эти классы изменятся в любой момент, при следующем обновлении фронта.

А подскажите пожалуйста, а как Вы это поняли ? То есть я имею ввиду почему класс в котором есть "dDZlPu" - обязательно изменится ?
Или что Вы имели ввиду под "следующем обновлении фронта" ?

Aetae 04.09.2022 00:48

Andy_kun, ну какбэ я не вижу смысла в наборе символов dDZlPu, с вероятностью в 99% это имя класса сгенерировано минификатором\css-module'м, а не написано руками. Сгенерированные имена как правило меняются при каждой сборке. Каждое обновление кода - новая сборка.

Andy_kun 05.09.2022 19:16

Цитата:

Сообщение от Aetae (Сообщение 547757)
Andy_kun, ну какбэ я не вижу смысла в наборе символов dDZlPu, с вероятностью в 99% это имя класса сгенерировано минификатором\css-module'м, а не написано руками. Сгенерированные имена как правило меняются при каждой сборке. Каждое обновление кода - новая сборка.

А если у условной кнопки такое сгенерированное имя класса, и я настроил автоматический клик по кнопке - получается, при каждом генерировании нового класса для кнопки автоматизация будет по сути бесполезной ?

Aetae 05.09.2022 19:34

Andy_kun, да, привязываться стоит к тому, что не меняется.


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