Witam, znalazłem kod do przejścia po drzewie DOM jednak mam z nim problemy.
Przykładowe drzewo:
<html>
<head>
</head>
<body id="bd">
<div id="dv1"><div id="dv2"><div id="dv3">
</div></div></div>
<span id="spn"></span>
</body>
</html>
<script language="javascript" src="demo.js"></script>
demo.js:
window.onload=treeTraverseIterative(document.body);
function treeTraverseIterative(elem) {
var queue = new Array();
var i, currentElem, childs, tagname;
var ids='';
queue.push(elem);
while (queue.length > 0) {
currentElem = queue.pop();
tagname=currentElem.tagName.toString();
if(currentElem.id=='')
ids+=tagname+' has no id\n';
else
ids+=tagname+' has id: '+currentElem.id+'\n';
if(tagname!="SCRIPT"){
childs = currentElem.childNodes.length;
for (i = 0; i < childs; i++) {
queue.push(currentElem.childNodes[i]);
}
}
if(queue.length==0){
alert(ids);
return true;
}
}
alert('bla');
}
W tym wydaniu skrypt przechodzi przez wszystkie węzły i sprawdza id a na końcu wyświetla stan id węzłów.
Problem w tym, że po alert(ids); i przed return true; wyrzucany jest bład (w IE) Nie zaimplementowo :/
Whatever :/ jeśli nawet wywale tego if-a to błąd wyskąpi po alert('bla'). Nie wiem o co w tym chodzi ;-(