Document Object Model

Document Object Model
(Объектная модель документа)
document.body.style.background = 'red';
alert( 'Элемент BODY стал красным, а сейчас обратно вернётся' );
document.body.style.background = '';Browser Object Model
(Объектная модель браузера)
alert( location.href ); // выведет текущий адресDOM - дерево элементов

З типа действий с DOM
- Manipulation
- Traversal
- Events
Навигация по DOM-элементам
По всем узлам:
parentNode-
nextSibling|previousSibling -
childNodes|firstChild|lastChild
Только по элементам:
parentElement-
nextElementSiblingpreviousElementSibling -
children,firstElementChildlastElementChild
document.documentElement- Элемент
<HTML> document.body- Элемент
<BODY> document.head- Элемент
<HEAD>(IE9+)
Поиск элементов
| Метод | Ищет по... | Ищет внутри элемента? | Поддержка |
getElementById |
id |
- | везде |
getElementsByName |
name |
- | везде |
getElementsByTagName |
тег или '*'
|
✔ | везде |
getElementsByClassName |
классу | ✔ | кроме IE8- |
querySelector |
CSS-селектор | ✔ | везде |
querySelectorAll |
CSS-селектор | ✔ | везде |
elem.matches(css)- Проверяет, подходит ли элемент под CSS-селектор.
elem.closest(css)- Ищет ближайший элемент сверху по иерархии DOM, подходящий под CSS-селектор. Первым проверяется сам
elem. Этот элемент возвращается. elemA.contains(elemB)- Возвращает
true, еслиelemAявляется предком (содержит)elemB.
Свойства элементов
node.nodeType- Тип узла: 1(элемент) / 3(текст) / другие.
elem.tagName- Тег элемента.
elem.innerHTML- HTML внутри элемента.
elem.innerText- Тектс внутри элемента.
elem.outerHTML- Весь HTML элемента, включая сам тег. На запись использовать с осторожностью, так как не модифицирует элемент, а вставляет новый вместо него.
node.textContent- Текстовое содержимое узла, для элементов содержит текст с вырезанными тегами (IE9+).
elem.hidden- Если поставить
true, то элемент будет скрыт (IE10+).
Атрибуты
elem.dataset.*- Значения атрибутов вида
data-*(IE10+).
- elem.hasAttribute(name) – проверяет наличие атрибута
- elem.getAttribute(name) – получает значение атрибута
- elem.setAttribute(name, value) – устанавливает атрибут
- elem.removeAttribute(name) – удаляет атрибут
Добавление и удаление
-
Методы для создания элементов:
-
document.createElement(tag)– создает элемент -
document.createTextNode(value)– создает текстовый узел -
elem.cloneNode(deep)– клонирует элемент, еслиdeep == true, то со всеми потомками, еслиfalse– без потомков. -
Вставка и удаление элементов:
parent.appendChild(elem)parent.insertBefore(elem, nextSibling)parent.removeChild(elem)parent.replaceChild(newElem, elem)
Работа с классами
Методы classList:
-
elem.classList.contains("class")– возвращаетtrue/false, в зависимости от того, есть ли у элемента классclass. -
elem.classList.add/remove("class")– добавляет/удаляет классclass -
elem.classList.toggle("class")– если классаclassнет, добавляет его, если есть – удаляет.
Атрибут elem.className
Стили
- Свойство
style– это объект, в котором CSS-свойства пишутсявотТакВот. Чтение и изменение его свойств – это, по сути, работа с компонентами атрибутаstyle. -
style.cssText– строка стилей для чтения или записи. Аналог полного атрибутаstyle. - Свойство
currentStyle(IE8-) и методgetComputedStyle(IE9+, стандарт) позволяют получить реальное, применённое сейчас к элементу свойство стиля с учётом CSS-каскада и браузерных стилей по умолчанию. - При этом
currentStyleвозвращает значение из CSS, до окончательных вычислений, аgetComputedStyle– окончательное, непосредственно применённое к элементу (как правило).
Document Object Model
By Alexey Kalyuzhnyi
Document Object Model
- 2,818