Joachim: Absoluten Index einer Node finden

Beitrag lesen

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.