Обычно при обходе DOM вы хотите указать начальную точку. Оттуда проверьте, имеет ли начальная точка childNodes
. Если это так, переберите их и повторите функцию, если они тоже имеют childNodes
.
Вот некоторый код, который выводится на консоль, используя DOM-форму этих узлов (я использовал элемент document / HTML в качестве начальной точки). Вам нужно будет запустить if против window.console
, если вы разрешаете не-разработчикам загружать эту страницу / код и используете console
:
recurseDomChildren(document.documentElement, true);
function recurseDomChildren(start, output)
{
var nodes;
if(start.childNodes)
{
nodes = start.childNodes;
loopNodeChildren(nodes, output);
}
}
function loopNodeChildren(nodes, output)
{
var node;
for(var i=0;i<nodes.length;i++)
{
node = nodes[i];
if(output)
{
outputNode(node);
}
if(node.childNodes)
{
recurseDomChildren(node, output);
}
}
}
function outputNode(node)
{
var whitespace = /^\s+$/g;
if(node.nodeType === 1)
{
console.log("element: " + node.tagName);
}else if(node.nodeType === 3)
{
//clear whitespace text nodes
node.data = node.data.replace(whitespace, "");
if(node.data)
{
console.log("text: " + node.data);
}
}
}
Пример: http://jsfiddle.net/ee5X6/