我尝试下面的算法到DFS的DOM树,但它不工作!它可以检查DOM树中的第一个路径。为什么?!为什么这个DOM DFS算法不起作用?
function DFS(P) // (ScanRegion, Elem, MCF)
{
P.Elem.setAttribute("Checked", "1");
Children = P.Elem.querySelectorAll("*");
for(I = 0, L = Children.length; I < L; I++)
DFS
(
{
ScanRegion : P.ScanRegion,
Elem : Children[I] ,
MCF : P.MCF
}
);
return;
}
DFS
(
{
ScanRegion : document.body,
Elem : document.body,
MCF : "Not important in this question :D"
}
);
经过几天的调试,我终于找到了问题所在。我尝试了下面的代码,并理解,在函数富集到DOM树的第一个叶子后,浏览器运行递归函数的第一个“返回”后,父函数的“L”变量将丢失其值并更改为“ 0' 。我猜这是因为JS中的变量范围问题,因为如你所知,子函数的'L'是'0'(因为叶子没有孩子:D),我认为它会影响父函数。
这里的调试代码我想:
function DFS(P) // (ScanRegion, Elem, MCF)
{
P.Elem.setAttribute("Checked", "1");
Children = P.Elem.querySelectorAll("*");
L = Children.length; alert(L); // * New
for(I = 0; I < L; I++)
DFS
(
{
ScanRegion : P.ScanRegion,
Elem : Children[I] ,
MCF : P.MCF
}
);
alert(L); // * New
return;
}
DFS
(
{
ScanRegion : document.body,
Elem : document.body,
MCF : "Not important in this question :D"
}
);
如果任何人知道的问题还是有真正的代码:)
坚持,两个代码都不起作用,对吧?我对第二个代码中不起作用有些困惑。 – Xufox
第二个只是一个调试版本,只有两个警报。 – Arvin
无论如何感谢您的关注:) – Arvin