Hi,
for(i = 0; i < parent.childNodes.length; i++) {
^^^^^^^^^^^^^^^^
schlecht. i global definiert überschreibt sich und produziert eine Endlosschleife. So gehts - vorausgesetzt es stört Dich nicht, dass auch Text-Nodes - und zwar je nach Browser unterschiedlich - berücksichtigt werden:
<!DOCTYPE html>
<html lang="de">
<head>
<script type="text/javascript">
function getDomChilds(parent, cnt) {
var child;
for(var i=0; child = parent.childNodes[i]; i++) {
cnt ++;
var e = document.createTextNode(cnt + ". " + (parent.childNodes[i].id || parent.childNodes[i]));
var br = document.createElement("br");
document.getElementById("out").appendChild(e);
document.getElementById("out").appendChild(br);
if(child.hasChildNodes()) {
getDomChilds(child, cnt);
}
}
}
function init() {
getDomChilds( document.getElementById("main"), 0 );
}
</script>
</head>
<body onload="init()">
<div id="main">
<div id="d1"><p id="p1">foo</p></div>
<div id="d2"><p id="p2">bar</p></div>
<div id="d3"><p id="p3">batz</p></div>
</div>
<p id="out"></p>
</body>
</html>
Gruesse, Joachim
Am Ende wird alles gut.