
- •DHTML (динамический HTML) – это набор средств, которые позволяют создавать более интерактивные Web-страницы
- •Для достижения перечисленных целей используются следующие методы:
- •Все эти явно разнородные методы покоятся, в действительности, на двух китах. Первым из
- •DOM обеспечивает динамический доступ к содержимому документа, его структуре и стилям. В DOM
- •DOM-модель — это внутреннее представление HTML-страницы в виде дерева. Все элементы страницы, включая
- •DOM — это модель HTML- и XML-документов, независимая от платформы и языка программирования,
- •На сегодняшний день W3C стандартизовал DOM 3-х уровней
- •Document
- •Объект document существует в единственном экземпляре для всего HTML-документа. Он присутствует всегда, если
- •Свойства объекта Document
- •DOM 2 HTML
- •Интерфейс HTMLDocument
- •Методы интерфейса HTMLDocument
- •HTML-элемент: интерфейс
- •Метод
- •Свойства интерфейса HTMLElement
- •При открытии любого HTML документа браузер предварительно производит разбор его содержимого и на
- •В DOM используется следующая терминология:
- •1. Все прямоугольники изображенные на картинке являются объектами (или узлами).
- •Корнем этого дерева является элемент HTML, который имеет двух детей — HEAD и
- •Каждый элемент данного дерева соответствует элементу HTML и, следовательно, имеет тег(и), содержимое и
- •Отношения между узлами
- •1.Все дочерние элементы, включая текстовые находятся в массиве childNodes.
- •1.Свойство parentNode указывает на родителя.
- •Обращение к элементам
- •Последовательное перемещение
- •Разберем процесс перемещения подробнее:
- •Прямое обращение к элементу
- •DOM Манипуляции
- •Полный набор констант типов узлов, определённый в спецификации W3C DOM
- •С помощью свойства innerHTML Вы можете получить доступ к содержимому текстового узла DOM
- •С помощью метода createElement() Вы можете создать элемент.
- •Добавить новый элемент к детям существующего элемента можно методом appendChild, который в DOM
- •insertBefore
- •cloneNode()
- •С помощью метода removeChild() Вы можете удалить узел потомок из элемента.
- •Быстрый способ удалить все содержимое тега - это присвоить свойству innerHTML пустую строку.
- •Для манипуляции узлами в объектной модели используются методы removeNode(), replaceNode() и swapNode().
- •Методы getAttribute (), setAttribute () и removeAttribute () позволяют, соответственно, получить и установить
- •Стандартные свойства
- •Стандартные методы
- •Таблица специальных DOM методов и свойств разных объектов
- •form
- •align alt
- •charset
- •form
- •deleteRow Удаляет строку таблицы.
- •insertRow
- •deleteCell Удаляет ячейку таблицы.
- •insertCell

DOM Манипуляции
Для каждого элемента на странице браузер создает в DOM элементный узел.
Каждый элементный узел имеет набор предопределенных свойств и методов. С помощью этих свойств и методов Вы можете производить различные манипуляции над содержимым элементных узлов объектной структуры.
Интерфейс Node определяет свойства и методы для перемещения по дереву и манипуляций с ним.
32

Полный набор констант типов узлов, определённый в спецификации W3C DOM
(голубым подсвечены узлы, доступные для HTML — JavaScript) В сборке
HTML — JavaScript, которой мы занимаемся, можно использовать
только 5 типов. :
Имя константы |
Значение |
|
Node.ELEMENT_NODE |
1 |
|
Node.ATTRIBUTE_NODE |
2 |
|
Node.TEXT_NODE |
3 |
|
Node.CDATA_SECTION_NODE |
4 |
|
Node.ENTITY_REFERENCE_NODE |
5 |
|
Node.ENTITY_NODE |
6 |
|
Node.PROCESSING_INSTRUCTION_N |
7 |
|
ODE |
||
|
||
Node.COMMENT_NODE |
8 |
|
Node.DOCUMENT_NODE |
9 |
|
Node.DOCUMENT_TYPE_NODE |
10 |
Node.DOCUMENT_FRAGMENT_NODE 11
Описание
Узел элемента (возвращает корневой элемент документа, для HTML-документов это элемент HTML)
Узел атрибута (возвращает атрибут элемента XML- или
HTML-документа) Текстовый узел (#text)
Узел секции CDATA (XML: альтернативный синтаксис для отображения символьных данных)
Узел ссылки на раздел Узел раздела
Узел директивы XML Узел комментария
Узел документа (основа доступа к содержанию документа и создания его составляющих)
Узел типа документа (возвращает тип данного документа, т.е. значение тэга DOCTYPE)
Узел фрагмента документа (извлечение части дерева документа, создание нового фрагмента документа, вставка фрагмента в качестве дочернего элемента какого-либо узла и т.п.)
33

С помощью свойства innerHTML Вы можете получить доступ к содержимому текстового узла DOM объекта.
С помощью свойства nodeName Вы можете узнать имя узла.
С помощью свойства nodeValue Вы можете узнать значения узла.
С помощью свойства parentNode Вы можете обратиться к родительскому узлу элемента.
С помощью свойства childNodes Вы можете обратиться к узлам потомкам элемента.
С помощью свойства attributes Вы можете обратиться к атрибутам узла.
С помощью свойства nodeType Вы можете узнать тип узла. Элементный узел имеет тип 1, атрибутный узел имеет тип 2, текстовый узел имеет тип 3.
34

<html>
<body>
<p id='par' style="color:red">Это абзац. </p> <h3 id='header'>Это заголовок.</h3>
<hr/>
<b>
<script type='text/javascript'> x=document.getElementById('par').nodeName; document.write(x+'<br />'); x=document.getElementById('par').childNodes[0].nodeValue; document.write(x+'<br />'); x=document.getElementById("par").parentNode.nodeName; document.write(x+"<br />"); x=document.getElementById("par").attributes[0].nodeValue; document.write(x+"<br />"); x=document.getElementById("par").nodeType; document.write(x+"<br />"); x=document.getElementById("par").childNodes[0].nodeType; document.write(x+"<br />");
</script>
</b>
</body>
</html>
35

С помощью метода createElement() Вы можете создать элемент.
С помощью метода appendChild() Вы можете вставить созданный элемент в произвольный узел.
36

var newDiv = document.createElement('div')
newDiv.className = 'my-class' newDiv.id = 'my-id' newDiv.style.backgroundColor = 'red‘ newDiv.innerHTML = 'Привет, мир!'
37

Добавить новый элемент к детям существующего элемента можно методом appendChild, который в DOM есть у любого тега.
Код из следующего примера добавляет новые элементы к списку:
<ul id="list"> <li>Первый элемент</li> </ul>
Список:
Первый элемент
// элемент-список UL
var list = document.getElementById('list') // новый элемент
var li = document.createElement('LI') li.innerHTML = 'Новый элемент списка' // добавление в конец list.appendChild(li)
Метод appendChild всегда добавляет элемент последним в список детей.
38

insertBefore
Метод вставляет элемент в страницу.
{Объект}.insertBefore({Элемент страницы, который мы хотим вставить}[, "{Дочерний элемент}"]);
Метод принимает два параметра.
Первый параметр задает ссылку на элемент, который мы хотим вставить.
Второй необязательный параметр задает ссылку на элемент Web-страницы, перед которым будет произведена вставка.
Этот метод возвращает ссылку, на элемент страницы, который мы вставили.
parentElem.insertBefore(newElem, target)
39

Например, в том же списке добавим элементы перед первым li. <ul id="list2">
<li>Первый элемент</li> </ul>
Первый элемент
// родительский элемент UL
var list = document.getElementById('list2')
//элемент для вставки перед ним (первый LI) var firstLi = list.getElementsByTagName('LI')[0]
//новый элемент
var newListElem = document.createElement('LI') newListElem.innerHTML = 'Новый элемент списка‘ // вставка
list.insertBefore(newListElem, firstLi)
40

<html>
<head>
<script type='text/javascript'> var i=0;
function elCreate(){ //Создадим новый абзац
var newpar = document.createElement('p'); i++;
document.body.appendChild(newpar).innerHTML='<b>Я созданный элемент номер '+i+'</b>.';
}
</script>
</head>
<body>
<input type='button' value='Создать новый элемент' onclick='elCreate()'/> <hr />
</body>
</html>
41