Використовуємо швидкі селектори для jQuery. JavaScript селектори

Завдання, яке дуже часто постає перед початківцями розробниками javascript це вибір елемента на веб-сторінці за його атрибуту id.

Припустимо, що у нас є код на сторінці.

Вміст блоку.

Яким чином можна вибрати елемент з id = "elem» і провести з ним ряд якихось дій?

Тут є кілька варіантів вирішення проблеми. Давайте їх зараз розглянемо.

Варіант 1. Скористатися методом Javascript getElementById.

Є спосіб, як можна звернутися до елементу по його id використовуючи «чистий» javascript код, без використання якихось сторонніх бібліотек. Цей спосіб полягає у використанні методу ggetElementById ( «id_елемента»). Таким чином ми звертаємося до потрібного нам елементу по його id.

Давайте подивимося, як це працює на простому прикладі.

Вміст блоку.

Зверніть увагу, що ці рядки коду (скрипт) знаходиться нижче самого елемента. Це обов'язкова умова роботи цього скрипта, тому що код Javascript виконується в міру завантаження сторінки. Якщо розташувати код вище, то ми будемо звертатися до елементу на сторінці, який ще не довантажити, тобто його в коді, на момент виконання скрипта, ще не буде. Є способи, як цього можна уникнути, але це виходить за рамки даної статті.

У підсумку, якщо все правильно працює, ми отримаємо спливаюче вікно. У цьому вікні буде виводитися текст, який знаходиться всередині блоку div.

Давайте тепер подивимося, як можна вирішити цю задачу іншим способом.

Варіант 2. За допомогою бібліотеки Jquery.

Другий варіант вибору елемента по його id, полягає в використанні бібліотеки Jquery. На практиці, в сучасних скриптах, найчастіше користуються саме цим способом. Він набагато зручніший і легше запам'ятовується.

Для того, щоб звернутися до елементу по його id потрібно скористатися конструкцією:

$ ( "# Elem")

Тут elem - ім'я, яке міститься в атрибуті id.

Оскільки ми будемо використовувати сторонню бібліотеку Javascript, яка називається Jquery, то цю бібліотеку потрібно спочатку підключити.

Додається вона в розділі , Одним із способів, як це можна зробити, потрібно додати наступний рядок коду:

Щоб бібліотека могла довантажити має бути з'єднання з Інтернет.

Вміст блоку.

Сам скрипт, як і в попередньому прикладі, повинен знаходитися нижче за кодом того елемента, з яким ви хочете взаємодіяти.

Таким чином, ми з вами розібрали два способи, як можна вибрати елемент на веб-сторінці за його атрибуту id і взаємодіяти з ним. Вибирайте той спосіб, який вам підходить, і використовуйте його на практиці.

Within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.

Note: The matching is done using depth-first pre-order traversal of the document "s nodes starting with the first element in the document" s markup and iterating through sequential nodes by order of the number of child nodes.

Syntax

element = document.querySelector (selectors);

Parameters

selectors A DOMString containing one or more selectors to match. This string must be a valid CSS selector string; if it isn "t, a SYNTAX_ERR exception is thrown. See Locating DOM elements using selectors for more about selectors and how to manage them.

Note: Characters that are not part of standard CSS syntax must be escaped using a backslash character. Since JavaScript also uses backslash escaping, be especially careful when writing string literals using these characters. See for more information.

Return value

Exceptions

SYNTAX_ERR The syntax of the specified selectors is invalid.

Usage notes

If the specified selector matches an ID that is incorrectly used more than once in the document, the first element with that ID is returned.

Escaping special characters

To match against an ID or selectors that do not follow standard CSS syntax (by using a colon or space inappropriately, for example), you must escape the character with a backslash ( "\"). As the backslash is also an escape character in JavaScript, if you are entering a literal string, you must escape it twice(Once for the JavaScript string, and another time for querySelector ()):

Examples

Finding the first element matching a class

In this example, the first element in the document with the class "myclass" is returned:

Var el = document.querySelector ( ". Myclass");

A more complex selector

Selectors can also be really powerful, as demonstrated in the following example. Here, the first element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent. "> element with the name "login" ( ) Located inside a) is the generic container for flow content. It has no effect on the content or layout until styled using CSS. ">

whose class is "user-panel main" (
) In the document is returned:

Var el = document.querySelector ( "div.user-panel.main input");

Specifications

Specification Status Comment
DOM
The definition of "document.querySelector ()" in that specification.
Living Standard

Browser compatibility

The compatibility table on this page is generated from structured data. If you "d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
querySelectorChrome Full support 1Edge Full support 12Firefox Full support 3.5IE Full support 8Opera Full support 10Safari Full support 3.2WebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support 10.1Safari iOS Full support 3.2Samsung Internet Android?

Legend

Full support Full support Compatibility unknown Compatibility unknown

На цьому уроці ми розглянемо методи об'єкта document, які призначені для пошуку вузла або колекції вузлів у всьому документі. А також методи об'єкта node (вузла), які виконують аналогічні дії, але вже серед своїх дочірніх вузлів.

Методи, призначені для пошуку вузла або колекції вузлів в дереві

На попередньому уроці ми розглянули властивості, за допомогою яких ми можемо переміщатися по дереву і знаходити потрібні нам вузли. Але, пошук вузлів за допомогою їх властивостей заняття дуже важке і не ефективне. Тому щоб знайти вузли в дереві, веб-розробники зазвичай використовують спеціально призначені для цього методи об'єкта document або вузла (node).

Метод getElementById ()

Метод getElementById (elementID) повертає елемент в документі, який має вказаний ідентифікатор (id = "elementID"), у вигляді об'єкта Node (вузла). Якщо елемента із зазначеним ідентифікатором не існує, то даний метод повертає значення null.

Відповідно стандартом у Вас в документі не може бути кілька елементів з однаковим значенням атрибута id, тобто значення ідентифікатора повинні бути унікальним в межах одного документа. Проте, якщо у Вас в документі існують кілька елементів із зазначеним id, то метод getElementById () поверне перший знайдений елемент.

document.getElementById (elementID)

Даний метод має один обов'язковий параметр (elementID), що представляє собою рядок, що містить значення атрибута id елемента, який Ви хочете отримати.

Наприклад, змінити колір тексту елементу, що має id = "nameArticie".

Назва статті

  • 1 пункт
  • 2 пункт
  • 3 пункт

Метод getElementsByClassName ()

Метод getElementsByClassName (className) повертає всі знайдені елементи в документі (для document) або серед дочірніх вузлів (для node), що мають вказане ім'якласу (class = "className"), у вигляді об'єкта NodeList (колекції вузлів). Іншими словами даний метод повертає об'єкт NodeList, що представляє собою колекцію елементів (вузлів), що мають вказане в параметрі цього методу ім'я класу.

Для отримання кількість знайдених вузлів Ви необхідно використовувати властивість length об'єкта NodeList. А для того щоб перебрати всі вузли в колекції можна скористатися наступним циклом:

Var elementsList = document.getElementsByClassName ( "list"); for (var i = 0; i

document.getElementByClassName (className);
node (вузол) .getElementByClassName (className);

Даний метод має один обов'язковий параметр (className), що представляє собою рядок, що містить назву класу елементів, які Ви хочете отримати. Якщо ви хочете отримати елементи, які мають кілька зазначених класів, то їх необхідно в параметрі даного методу розділити за допомогою пробілу. Наприклад, отримати колекцію вузлів, що мають класи classl і class2:

Document.getElementsByClassName ( "classl class2");

Наприклад, змінити колір фону елементів, що мають клас list:

Назва статті

  • 1 пункт
  • 2 пункт
  • 3 пункт
  • 1 пункт
  • 2 пункт

Наприклад, отримати колекцію елементів (вузлів), що мають клас list. Далі отримати 2 вузол в цій колекції, тобто вузол має індекс 1. Після цього змінити колір фону отриманого вузла.

// Отримати колекцію елементів, що мають клас list var elementsList = document.getElementsByClassName ( "list"); // Отримати 2 вузол в колекції var secondList = elementsList; // Змінити колір фону елемента secondList.style.backgroundColor = "red";

Метод getElementsByTagName ()

Метод getElementsByTagName (tagname) повертає всі знайдені елементи в документі (для document) або серед дочірніх вузлів (для node), що мають зазначений тег, у вигляді об'єкта NodeList (колекції вузлів). Отримання певного вузла в колекції здійснюється за індексом. Відлік елементів (вузлів) в колекції починається з 0.

document.getElementsByTagName (tagname);
node (вузол) .getElementsByTagName (tagname);

Даний метод має один обов'язковий параметр (tagname), що представляє собою рядок, що містить ім'я тега, яке вказується прописними буквами. Якщо в якості параметра вказати рядок, що містить зірочку ( "*"), то ми отримаємо всі елементи в документі (для об'єкта document) або всі дочірні елементи вузла (для об'єкта node).

Для отримання кількість знайдених вузлів, що містяться в колекції, необхідно використовувати властивість length об'єкта NodeList. А для того щоб перебрати всі вузли в колекції можна скористатися наступним циклом:

Var elementsList = document.getElementsByTagName ( "LI"); for (var i = 0; i

Наприклад, змінити колір фону елементів LI:

Назва статті

  • 1 пункт
  • 2 пункт
  • 3 пункт

Наприклад, отримати колекцію елементів UL. Далі отримати 1 вузол в цій колекції, тобто вузол має індекс 0. Після цього отримати колекцію дочірніх вузлів LI для цього вузла. І на закінчення змінити розмір шрифту кожного елемента в цій колекції.

// Отримати колекцію елементів UL var elementsUL = document.getElementsByTagName ( "UL"); // Отримати 1 вузол в цій колекції var elementUL = elementsUL; // Отримати колекцію Дочірніх елементів LI вузла elementUL var elementsLI = elementUL.getElementsByTagName ( "LI"); // перебрати всі елементи в колекції for (var i = 0; i

Метод getElementsByName ()

Метод getElementsByName (name) повертає всі знайдені елементи в документі, мають зазначене ім'я (значення атрибута name), у вигляді об'єкта NodeList (колекції вузлів).

Елементи (вузли) додаються в колекцію в тому порядку, в якому вони зустрічаються в дереві. Отримання певного вузла в колекції здійснюється за індексом. Відлік елементів (вузлів) в колекції починається з 0.

Var elementsList = document.getElementsByName ( "phone"); for (var i = 0; i

Примітка: У HTML5 атрибут name визнаний застарілим, і він був замінений для більшості елементів атрибутом id.

document.getElementsByName (name)


Даний метод має один обов'язковий параметр (name), що представляє собою рядок, що містить значення атрибута name.

Наприклад, змінити колір фону елементів, що мають атрибут name зі значенням phone (name = "phone"):

Phone: Another phone:

Метод querySelector ()

Метод querySelector () повертає перший знайдений елемент в документі (для document) або серед дочірніх вузлів (для node), який відповідає CSS селектору, вказаною в якості параметра даного методу. Якщо жоден елемент не відповідає CSS селектору, то даний метод повертає null.

document.querySelector (cssSelector)
node.querySelector (cssSelector)

Даний метод має один обов'язковий параметр (cssSelector), що представляє собою рядок, що містить CSS селектор, відповідно до якого вибирається елемент.

Наприклад, змінити колір тексту першого знайденого елемента, відповідного селектору #main p:

...

...

Наприклад, отримати колекцію елементів DIV в документі. Далі отримати 1 вузол в цій колекції, тобто вузол має індекс 0. Для цього вузла знайти серед його дочірніх вузлів перший елемент, який відповідають CSS селектору h1 + p. Після цього змінити розмір шрифту цього елемента.

// Отримати колекцію елементів DIV var elementsDIV = document.getElementsByTagName ( "DIV"); // Отримати 1 вузол в цій колекції var elementDIV = elementsDIV; // Отримати вузол p, розташований відразу ж після вузла h1 // Пошук вузла виробляти серед дочірніх вузлів вузла, який зберігається в змінної elementDIV var elementP = elementDIV.querySelector ( "h1 + p"); // змінити розмір шрифту елемента elementP.style.fontSize = "30px";

Метод querySelectorAll ()

Метод querySelectorAll () повертає всі знайдені елементи в документі (для document) або серед дочірніх вузлів (для node), які відповідають CSS селектору, вказаною в якості параметра даного методу, у вигляді об'єкта NodeList (колекції вузлів). Звернення до вузлів в колекції здійснюється за індексом. Відлік елементів (вузлів) в колекції починається з 0.

Для отримання кількість знайдених вузлів необхідно використовувати властивість length об'єкта NodeList. А для того щоб перебрати всі вузли в колекції можна скористатися наступним циклом:

Var elementsList = document.querySelectorAll ( "# main p"); for (var i = 0; i

document.querySelectorAll (cssSelector);
node (вузол) .querySelectorAll (cssSelector);

Даний метод має один обов'язковий параметр (cssSelector), що представляє собою рядок, що містить CSS селектор, відповідно до якого вибираються елементи. Для вказівки кількох селекторів в параметрі цього методу, їх необхідно розділити між собою через кому.

Наприклад, змінити колір тексту елементів, відповідних селектору #main p:

...

...

Наприклад, отримати дочірній вузол, який має атрибут id зі значенням sidebar. Змінити колір фону дочірніх елементів p вузла, отриманого на попередньому кроці:

// отримати елемент (вузол), що має id = "sidebar" var sidebar = document.getElementById ( "sidebar"); // отримати колекцію вузлів, відповідних селектору "p" var elementsListP = sidebar.querySelectorAll ( "p"); // перебрати всі елементи в колекції for (var i = 0; i

завдання

Написати код на мові JavaScript використовуючи методи getElementById (), getElementsByClassName (), getElementsByTagName (), querySelector (), querySelectorAll () для наступних завдань:

  1. Отримати всі елементи p, розташовані в блоці main;
  2. Отримати блок aside, розташований в контейнері div;
  3. Отримати блок footer, розташований в контейнері body.

Кожне завдання виконати якомога більшою кількістю різних способів.

JavaScript метод document .querySelector ()повертає перший елемент в документі (об'єкт Element), відповідний вказаною селектору, або групі селектор. Якщо збігів, не знайдено, то повертається значення null.

Звертаю Вашу увагу на те, що не допускається використання CSS псевдоелементів як значення селектора для пошуку елементів, в цьому випадку в якості значення, що повертається завжди буде значення null.

Якщо вам необхідний список всіх елементів, відповідних вказаним селектору або селекторам, то використовуйте для цього метод querySelectorAll ().

метод .querySelector ()також визначено в об'єкті Element, з цієї причини він може бути викликаний на будь-якому елементі, не тільки на об'єкті document. Елемент на якому він викликається буде використаний в якості кореневого елемента для пошуку.

підтримка браузерами

JavaScript синтаксис:

document .querySelector ( selectors) selectors- String

Специфікація

Selectors API Level 1

значення параметрів

параметропис
selectors Аргумент повинен відповідати допустимій рядку селектора, що містить один або кілька селекторів. При вказівці декількох селекторів необхідно розділяти значення комами. У цьому випадку буде обраний перший знайдений елемент із заданих селектор.
Якщо з якоїсь причини ви використовуєте в найменуванні селектор символи, які не є частиною стандартного синтаксису CSS, То при пошуку такі символи повинні бути екрановані за допомогою символу зворотної косої межі ( "\" ). Оскільки зворотна коса риска також є спеціальним символом ( escape) в JavaScript, То при введенні літеральної рядки її необхідно екранувати двічі. Обов'язковий параметр.

винятки

приклад використання

</span>Використання JavaScript методу document.querySelector () <span>
перший блок
class = "block">другий блок
class = "block">третій блок

У цьому прикладі ми з використанням атрибута подій onclick при натисканні на кнопку (HTML елемент

Сподобалася стаття? Поділіться з друзями!