Вступление
-
Объектная модель документа *, обычно называемая * DOM *, является важной частью создания веб-сайтов интерактивными. Это интерфейс, который позволяет языку программирования управлять содержимым, структурой и стилем веб-сайта. JavaScript - это клиентский язык сценариев, который подключается к DOM в интернет-браузере.
Практически каждый раз, когда веб-сайт выполняет какое-либо действие, например, переключение между слайд-шоу изображений, отображение ошибки, когда пользователь пытается отправить неполную форму, или переключение навигационного меню, это является результатом доступа JavaScript к DOM и манипулирования им. В этой статье мы узнаем, что такое DOM, как работать с объектом + document +
и чем отличается исходный код HTML от DOM.
Предпосылки
Для того, чтобы эффективно понять DOM и как это связано с работой с сетью, необходимо иметь знания о HTML и https : //developer.mozilla.org/en-US/docs/Web/CSS [CSS]. Также полезно иметь представление о фундаментальном синтаксисе и структуре кода JavaScript.
Что такое DOM?
На самом базовом уровне веб-сайт состоит из HTML-документа. Браузер, который вы используете для просмотра веб-сайта, - это программа, которая интерпретирует HTML и CSS и отображает стиль, контент и структуру на странице, которую вы видите.
В дополнение к анализу стиля и структуры HTML и CSS браузер создает представление документа, известного как объектная модель документа. Эта * модель * позволяет JavaScript получать доступ к текстовому контенту и элементам веб-сайта * document * как * objects *.
JavaScript - это интерактивный язык, и с его помощью легче понять новые концепции. Давайте создадим очень простой веб-сайт. Создайте файл + index.html
и сохраните его в новом каталоге проекта.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Learning the DOM</title>
</head>
<body>
<h1>Document Object Model</h1>
</body>
</html>
Этот код является знакомым HTML источником нового каркаса сайта. Он содержит самые важные аспекты документа веб-сайта - тип документа и тег + html +
, в которые вложены + head +
и + body +
.
Для наших целей мы будем использовать браузер Chrome, но вы можете получить аналогичный вывод из другого современного браузера. В Chrome откройте + index.html
. Вы увидите простой веб-сайт с заголовком «Объектная модель документа». Щелкните правой кнопкой мыши в любом месте страницы и выберите «Осмотреть». Это откроет Инструменты разработчика.
На вкладке Elements вы увидите DOM.
изображение: https: //assets.digitalocean.com/articles/eng_javascript/dom/the-dom.png [Пример DOM]
В этом случае при развертывании он выглядит точно так же, как и исходный код HTML, который мы только что написали, - тип документа и несколько других тегов HTML, которые мы добавили. При наведении курсора на каждый элемент будет выделен соответствующий элемент на отображаемом веб-сайте. Маленькие стрелки слева от элементов HTML позволяют переключать вид вложенных элементов.
Объект документа
Объект + document +
- это встроенный объект, который имеет множество * свойств * и * методов *, которые мы можем использовать для доступа и изменения веб-сайтов. Чтобы понять, как работать с DOM, вы должны понимать, как объекты работают в JavaScript. Прочтите Understanding Objects in JavaScript, если вам не нравится концепция объектов.
В Инструментах разработчика на * index.html * перейдите на вкладку Console. Введите + document
в консоли и нажмите` + ENTER`. Вы увидите, что вывод такой же, как и на вкладке Elements.
document;
Output#document
<!DOCTYPE html>
<html lang="en">
<head>
<title>Learning the DOM</title>
</head>
<body>
<h1>Document Object Model</h1>
</body>
</html>
Ввод + document +
и другая работа непосредственно в консоли - это не то, что вы вообще когда-либо будете делать вне отладки, но это помогает точно определить, что такое объект + document +
и как его изменить, как мы узнаем ниже. ,
В чем разница между DOM и исходным кодом HTML?
В настоящее время с этим примером кажется, что исходный код HTML и DOM - это одно и то же. Есть два случая, в которых сгенерированный браузером DOM будет отличаться от исходного кода HTML:
-
DOM модифицируется клиентским JavaScript
-
Браузер автоматически исправляет ошибки в исходном коде
Давайте продемонстрируем, как DOM может быть изменен клиентским JavaScript. Введите в консоль следующее:
document.body;
Консоль ответит этим выводом:
Output<body>
<h1>Document Object Model</h1>
</body>
+ document
- это объект,` + body + - это свойство того объекта, к которому мы получили доступ с точечной нотацией. Отправка `+ document.body +
на консоль выводит элемент + body +
и все, что внутри него.
В консоли мы можем изменить некоторые живые свойства объекта + body +
на этом сайте. Мы отредактируем атрибут + style
, изменив цвет фона на` + fuchsia`. Введите это в консоли:
document.body.style.backgroundColor = 'fuchsia';
После ввода и отправки приведенного выше кода вы увидите живое обновление сайта, так как цвет фона изменится.
изображение: https: //assets.digitalocean.com/articles/eng_javascript/dom/modifying-the-dom.png [DOM Live Modification]
Переключившись на вкладку Elements или снова набрав + document.body +
в консоли, вы увидите, что DOM изменился.
Output<body style="background-color: fuchsia;">
<h1>Document Object Model</h1>
</body>
Код JavaScript, который мы ввели, присваивая + fuchsia +
к цвету фона + body +
, теперь является частью DOM.
Тем не менее, щелкните правой кнопкой мыши на странице и выберите «View Source Source». Вы заметите, что источник сайта не содержит новый атрибут стиля, который мы добавили через JavaScript. Источник веб-сайта не изменится и никогда не будет зависеть от клиентского JavaScript. Если вы обновите страницу, новый код, который мы добавили в консоль, исчезнет.
Другой случай, когда DOM может иметь выход, отличный от исходного кода HTML, - это ошибки в исходном коде. Одним из распространенных примеров этого является тег + table
- тег` + tbody` требуется внутри + table +
, но разработчики часто не включают его в свой HTML. Браузер автоматически исправит ошибку и добавит + tbody +
, модифицируя DOM. DOM также исправит теги, которые не были закрыты.
Заключение
В этом уроке мы определили DOM, получили доступ к объекту + document +
, использовали JavaScript и консоль для обновления свойства объекта + document +
и рассмотрели разницу между исходным кодом HTML и DOM.
Для получения более подробной информации о DOM просмотрите страницу Document Object Model (DOM) в сети разработчиков Mozilla.
В следующем уроке мы рассмотрим важную терминологию HTML, узнаем о дереве DOM, узнаем, что такое узлы, узнаем о наиболее распространенных типах узлов и начнем создавать интерактивные сценарии с использованием JavaScript.