JavaScript. Подробное руководство, 6-е издание, стр. 206
<b> if (е.firstElementChild) е = е.firstElementChild;</b><b> else {</b><b> for(e = е.firstChild; е && e.nodeType !== 1; е = е.nextSibling)</b><b> /* пустой цикл */;</b><b> }</b><b> return sibling(e, n); // Вернуть n-го брата первого дочернего элемента</b><b> }</b><b> else { // n - отрицательное: двигаться назад, начиная с последнего</b><b> if (е.lastElementChild) е = е.lastElementChild;</b><b> else {</b><b> for(e = e.lastChild; e && e.nodeType !== 1; e=e.previousSibling)</b><b> /* пустой цикл */;</b><b> }</b><b> return sibling(e, n+1); // +1, чтобы преобразовать номер -1 дочернего</b><b> // в номер 0 братского для последнего</b><b> }</b><b>}</b>Определение собственных методов элементов
Все текущие броузеры (включая ІE8 и выше) реализуют модель DOM таким образом, что такие типы, как
<b>Element</b><b>HTMLDocument</b><b>String</b><b>Array</b><b>Element</b><b>Element.prototype.next = function() {</b><b> if (this.nextElementSibling) return this.nextElementSibling;</b><b> var sib = this.nextSibling;</b><b> while(sib && sib.nodeType !== 1) sib = sib.nextSibling;</b><b> return sib;</b><b>};</b>Функции, представленные в примере 15.2, не были реализованы в виде методов объекта
<b>Element</b>Однако возможность расширения типов DOM может пригодиться для реализации особенностей, характерных для IE, в других броузерах. Как отмечалось выше, нестандартное свойство
<b>children</b><b>Element</b><b>// Реализация свойства Element.children в броузерах,</b><b>// не поддерживающих его</b><b>// Обратите внимание, что этот метод возвращает статический</b><b>// массив, а не "живой" NodeList</b><b>if (!document.documentElement.children) {</b><b> Element.prototype.__defineGetter__("children",</b><b> function() { var kids = [];</b><b> for(var c = this.firstChild; c != null; c = c.nextSibling)</b><b> if (c.nodeType === 1) kids.push(c);</b><b> return kids;</b><b> }):</b><b>}</b>Метод
<b>__defineGetter__ </b>стандартным, но его вполне можно использовать для обеспечения переносимости в таком программном коде, как этот.
15.4. Атрибуты
HTML-элементы состоят из имени тега и множества пар имя/значение, известных как атрибуты. Например, элемент
<b><а></b><b>href</b><b>HTMLElement</b>15.4.1. HTML-атрибуты как свойства объектов Element
Объекты
<b>HTMLElement</b><b>HTMLElement</b><b>id</b><b>title</b><b>lang</b><b>dir</b><b>onclick</b><b>Element</b><b>src</b><b>HTMLElement</b><b><img></b><b>var image = document.getElementById("myimage");</b><b>var imgurl = image.src; // Атрибут src определяет URL-адрес изображения </b>