我有点困惑。 i
是在本地声明的,所以它的不是相同的i
变量被修改。测试了这个非常页:
var span = document.getElementsByTagName("span")[0];
function func(node) {
for(var i = 0; i < node.children.length; i++) {
console.log([i, node]);
func(node.children[i]);
}
}
func(span);
// returns
// [0, <span id="hlinks-user">...</span>]
// [1, <span id="hlinks-user">...</span>]
// [2, <span id="hlinks-user">...</span>]
// [0, <a href="/users...">...</a>]
// [3, <span id="hlinks-user">...</span>]
// [0, <span title="1 silver...">...</span>]
// [1, <span title="1 silver...">...</span>]
// [4, <span id="hlinks-user">...</span>]
// [0, <span title="7 bronze...">...</span>]
// [1, <span title="7 bronze...">...</span>]
// [5, <span id="hlinks-user">...</span>]
你能发表一些'node'的示例数据吗? JavaScript将变量作用于包含“函数”或对象字面量的变量,因此每次对'func'的递归调用都应该有它自己的'i'。 – Stoive
同意。在其他情况下进行测试。你可以在jsfiddle.com上发布一些例子吗? –
这个函数看起来像只是循环(递归)了一点(假设节点有孩子)......是否有它应该做的事情? – Gerrat