Skip to content

document

garevna edited this page Sep 30, 2018 · 12 revisions

🎓 Объект document

воспользуемся рекурсивной функцией showProto:

function showProto ( elem ) {
    var proto = elem.__proto__
    if ( !proto ) return
    console.info ( proto.constructor.name )
    showProto ( proto )
}

для получения цепочки прототипов объекта document

showProto ( document )

Результат:

HTMLDocument
Document
Node
EventTarget
Object

Объект document включает две структурные части:

document.head
document.body

Если применить функцию showProto к document.head:

showProto ( document.head )

то мы получим такую цепочку протипов:

HTMLHeadElement
HTMLElement
Element
Node
EventTarget
Object

Применим функцию showProto к document.body:

showProto ( document.body )

цепочка протипов будет такой:

HTMLBodyElement
HTMLElement
Element
Node
EventTarget
Object
document document.head document.body
HTMLHeadElement HTMLBodyElement
HTMLDocument HTMLElement HTMLElement
Document Element Element
Node Node Node
EventTarget EventTarget EventTarget
Object Object Object

⚠️ Все цепочки прототипов заканчиваются Object

⚠️ Все html-элементы наследуют от класса HTMLElement


🎓 Свойства объекта document:

 document.head      // __proto__: HTMLHeadElement
 document.body      // __proto__: HTMLBodyElement

 document.doctype   // строка

 document.URL       // строка
 document.location  // объект

 document.images    // HTMLCollection
 document.forms     // HTMLCollection
 document.links     // HTMLCollection

 document.cookie    // строка
...

Выполним код в консоли:

for ( var prop in document ) 
    prop.indexOf ( "on" ) === 0 ? 
       console.info ( prop.slice(2) ) : ""

Мы получим длинный перечень событий объекта document

⚠️ Все свойства, имена которых начинаются на "on", могут содержать ссылку на обработчика события, тип которого определяется тем, что следует за "on" в имени свойства

по умолчанию эти значениями этих свойств будет null

например, присвойте свойству onmouseover объекта document ссылку на функцию:

document.onmouseover = function ( event ) {
    console.info ( `${event.clientX} : ${event.clientY}` )
} 

🎓 Методы объекта document:

✅ document.createElement

Метод createElement создает элемент DOM

Аргументом метода является строка, содержащая имя тега html-элемента ( регистр не имеет значения )

Если переданная строка не соответствует никакому тегу в спецификации языка html, то созданный элемент будет иметь класс HTMLUnknownElement

Для поиска элементов на странице у объекта document есть несколько методов:

✅ document.getElementById

ищет элемент по его атрибуту id

✅ document.getElementsByTagName
✅ document.getElementsByClassName

Возвращают коллецию html-элементов ( итерабельный объект класса HTMLCollection ) либо по имени тега, либо по имени класса

✅ document.querySelector

Возвращает первый найденный элемент по указанному селектору

<body>
    <h3 id="demo">demo</h3>
    <section>
        <div title="figure">figure</div>
        <figure class="promoClass">promoClass</figure>
    </section>
    <input type="number">
    <input type="color">
</body>
document.querySelector ( "section" )
document.querySelector ( "#demo" )
document.querySelector ( ".promoClass" )
document.querySelector ( "[type='number']" )
document.querySelector ( "[title]" )
✅ document.querySelectorAll

Возвращает итерабельный объект класса NodeList, содержащий все элементы, соответствующие указанному селектору


🔗 MDN


Элементы DOM

Свойства элементов DOM

childNodes

Объект NodeList

☕ 1

🔗 w3schools


children

Объект HTMLCollection

lastModified

Строка ( 09/30/2018 11:00:15 )

Методы

🎓 Типы узлов дерева DOM

DOM представляет собой граф ( дерево ), вершины которого ( узлы, или nodes ) могут быть html-элементами, комментариями, обычным текстом...

Получить все дочерние узлы элемента DOM можно с помощью свойства childNodes этого элемента

document.body.childNodes
document.querySelector ( "main" ).childNodes

Каждый узел ( объект ) имеет свойство nodeType:

Код Тип узла Пример
1 ELEMENT_NODE <div>
2 ATTRIBUTE_NODE href = "https://translate.google.com/"
3 TEXT_NODE document.body.appendChild ( new Text( "Hello" ) )
4 CDATA_SECTION_NODE
5 ENTITY_REFERENCE_NODE
6 ENTITY_NODE
7 PROCESSING_INSTRUCTION_NODE
8 COMMENT_NODE <!-- ... -->
9 DOCUMENT_NODE <html>...</html>
10 DOCUMENT_TYPE_NODE <!DOCTYPE>
11 DOCUMENT_FRAGMENT_NODE
12 NOTATION_NODE

☕ 1

document.body.appendChild ( new Text( "Hello" ) )
document.body.childNodes
▼ NodeList [text]
      0: text
      length: 1
    ► __proto__: NodeList

https://www.w3schools.com/xml/dom_nodetype.asp

© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав


Новая версия


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally