Показать сообщение отдельно
  #1 (permalink)  
Старый 27.08.2009, 16:58
Аватар для JSprog
L
Отправить личное сообщение для JSprog Посмотреть профиль Найти все сообщения от JSprog
 
Регистрация: 16.08.2009
Сообщений: 416

Ориентация по DOM дереву.
Наверняка вам не раз было не удобно ориентироваться по DOM дереву с помощью методов ParentNode, PreviousSibling, FirstChild, LastChild, NextSibling из-за узлов - переводов строки то есть пустых строк.
Предлагаю вам модифицированы методы которые перемещаются только по узлам первого типа (XMl тэги)

previousSibling:
function prev(elem) {
 do{
  elem=elem.previousSibling;
 } while ( elem && elem.nodeType !=1);
 return elem;
}

nextSibling:
function next(elem) {
 do{
  elem=elem.nextSibling;
 } while (elem && elem.nodeType !=1);
 return elem;
 }

firstchild:
function first(elem) {
 elem=elem.firstChild;
 return elem && elem.nodeType!=1 ? next (elem) :elem;
}

lastchild:
function last(elem) {
 elem=elem.lastChild;
 return elem && elem.nodeType!=1 ? prev (elem) :elem;
}

И наконец parentNode. Можно указать количество родительских узлов на которое нужно подняться во втором аргументе.
function parent(elem, num) {
 num = num || 1;
 for (var i=0; i < num; i++)
 if ( elem != null ) elem = elem.parentNode;
 return elem;
}

Например чтобы переместиться ко второму элементу body надо написать
next(first(document.body))
__________________
Лови позитив

Последний раз редактировалось JSprog, 27.08.2009 в 17:49.
Ответить с цитированием