Jan 20, 2013 23:30
Немного попрактиковался с обходом дерева документа, тема интересная, заслуживает пристального внимания.
Написал скрипт, рекурсивно обходящий дерево и возвращающий массив c именами всех HTML тэгов.
Насколько я понял, используя свойство nodeType можно узнать тип узла, но вот так вот просто узнать например что это за HTML тэг нельзя. Но можно преобразовать объект Node в строковое представление с помощью метода toString(), и там будет содержаться название тэга в виде строки (как пример) "[object HTMLDivElement]". Что собственно скрипт и делает.
function scanHTMLTree(node)
{
var HTMLTree=[];
if (node.nodeType==Node.ELEMENT_NODE) HTMLTree.push(node.toString());// Если тэг - то строковое представление в массив
for (var childNode=node.firstChild; childNode!=null;childNode=childNode.nextSibling) HTMLTree=HTMLTree.concat(scanHTMLTree(childNode));//обход по всем дочерним узлам с добавлением в массив с именами тэгов
return HTMLTree;
}