很简单的一段代码,但是却让我调试很久,现象是,第一个循环只执行了一次,但是节点的数量肯定不止一个,
每次都是执行了一次,然后我怀疑循环2,是否执行完就退出,或者死循环(递归)了,经调试还是没发现.
后来把第二个循环的i改成j问题解决了,也想起了一条规定,javascript里不加var定义的变量是全局的变量
i作为全局变量在循环2里就改变了值,到了循环1就不执行了
加上var也可解决,
小问题但是,很容易忽略,另外就是在递归时调用自身方法时,i的值还是原来的没有改变,
不过这种遍历的方法似乎有点落伍了,应该有更好方法,进一步学习中.........
function showElement()
{
for (i=0; i < document.documentElement.children.length; i++)//循环1
{
var node = document.documentElement.children[i];
alert(node.nodeName);
if (node.hasChildNodes())
{
showAll(node);
}
}
}
function showAll(node)
{
for (i=0; i < node.childNodes.length; i++)//循环2
{
alert(node.childNodes[i].nodeName);
if (node.childNodes[i].hasChildNodes())
{
showAll(node.childeNodes[i]);//递归
}
}
//alert("dsagd");
}