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.scripts // HTMLCollection
for ( var script of document.scripts )
     console.log ( script.innerText )
  • ✅ document.styleSheets // StyleSheetList
for ( var sheet of document.styleSheets ) {
     for ( var rule of sheet.cssRules ) {
          console.warn ( rule.selectorText )
          console.info ( rule.cssText )
     }
}
  • ✅ document.cookie // строка
  • ✅ document.lastModified // строка ( '09/30/2018 11:00:15' ) ...

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

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

Создает элемент DOM и возвращает ссылку на него

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

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

☕ 1

var style = document.createElement ( 'style' )
style.appendChild (
    document.createTextNode (
        `section { border: inset 1px; }`
    )
)
console.log ( style )
✅ document.createTextNode

☕ 2

style.appendChild ( 
    document.createTextNode (
        `div { color: blue; }`
    ) 
)

Для поиска элементов на странице у объекта 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


© 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