logo

Поиск элементов по части имени с помощью querySelector в JS

Быстрый ответ

Чтобы включить шаблоны в поиск, примените CSS-селекторы атрибутов в querySelectorAll. Это простой и эффективный метод:

JS
Скопировать код
let startsWithWildcard = document.querySelectorAll('[name^="data-"]'); // Элементы, начинающиеся на 'data-'
let containsWildcard = document.querySelectorAll('[name*="example"]'); // Элементы, содержащие 'example'
let endsWithWildcard = document.querySelectorAll('[name$="end"]'); // Элементы, заканчивающиеся на 'end'

Метод querySelector также позволяет включать шаблоны в поиск элементов по названию атрибута с использованием ^=, *=, $=.

Гибкость с XPath и Regex: Расширенные возможности поиска с использованием шаблонов

Для выполнения сложных задач могут пригодиться XPath и регулярные выражения.

XPath: Мощный инструмент

XPath прекрасно подходит для выборки элементов, когда стандартные возможности querySelectorAll не достаточны.

JS
Скопировать код
// Выборка элементов, имеющих "data" в названии
let xpathResult = document.evaluate("//*[contains(local-name(), 'data')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

// Преобразование результатов XPath в массив DOM-элементов
let elements = [];
for (let i = 0; i < xpathResult.snapshotLength; i++) {
    elements.push(xpathResult.snapshotItem(i));
}

При использовании XPath следует учесть совместимость и избегать применения устаревших функций.

NodeList в Array: Повышаем гибкость

NodeList, возвращаемый функцией querySelectorAll, менее удобен в использовании, чем массивы. Вы можете преобразовать его в массив:

JS
Скопировать код
let nodelist = document.querySelectorAll('...');
let elementsArray = Array.from(nodelist); // Преобразуем NodeList в массив

Теперь вы сможете применять весь спектр методов массивов.

Regex: Мастерство использования шаблонов

С помощью регулярных выражений вы можете осуществлять поиск элементов по сложным шаблонам:

JS
Скопировать код
let regex = /^data-/; // Поиск элементов, начинающихся на "data-"
let matchingElements = elementsArray.filter(el => regex.test(el.tagName));

Визуализация

Воспринимайте querySelector и querySelectorAll как продвинутые инструменты для поиска элементов. Представьте себе:

Markdown
Скопировать код
Разведчик: "Я найду все, что начинается на 🌟секретный код🌟 или содержит его в любом месте."

Применение querySelectorAll("[id^='prefix-']") напоминает труд разведчика, перебирающего секретные документы:

Markdown
Скопировать код
Разведчик: "Документы с префиксом 'prefix-'? Так, просмотрю все!"

С помощью шаблонов поиск с помощью querySelector и querySelectorAll становится гибким.

Мастерство работы с селекторами атрибутов

Поглубже изучите использование селекторов атрибутов, чтобы усовершенствовать навыки шаблонного поиска.

Сопоставление префиксов и суффиксов

С помощью CSS-селекторов вы можете определить префиксы (^=) и суффиксы ($=) атрибутов:

JS
Скопировать код
let idPrefixMatch = document.querySelectorAll('[id^="user-"]'); // Элементы с префиксом 'user-'
let typeSuffixMatch = document.querySelectorAll('[type$="-widget"]'); // Виджеты с суффиксом '-widget'

Постановка через точку: Упрощенное присвоение атрибутов

Если вы столкнулись с проблемами при работе с атрибутами, попробуйте простой способ их задания:

JS
Скопировать код
element.setAttribute('tag-name', element.tagName.toLowerCase());
let myElement = document.querySelector('[tag-name="my-custom-tag"]'); // Поиск по пользовательскому атрибуту

Комбинация методов: Многогранность подходов при поиске

Для сложных задач используйте комбинацию CSS-селекторов, XPath и регулярных выражений.

Полезные материалы

  1. Document: метод querySelector() – Web APIs | MDN — Полное руководство по применению querySelector и querySelectorAll.
  2. Селекторы атрибутов – CSS: Cascading Style Sheets | MDN — Объяснение основых принципов работы с селекторами атрибутов.
  3. Attribute Selectors | CSS-Tricks — Как создавать стили, используя шаблоны и атрибуты.
  4. XPath | MDN — Полезные сведения о XPath и стратегиях выбора элементов.
  5. dom – Как выполнять выборку элементов по шаблонам имени с "querySelector()" или "querySelectorAll()" в JavaScript? – Stack Overflow — Обсуждение использования шаблонов с сообществом.
  6. Поиск: getElement, querySelector — Пошаговое руководство по использованию методов поиска в DOM.
  7. Справочник по CSS-селекторам — Обширная информация о CSS-селекторах.