나는 아래의 알고리즘을 DOM 트리 DFS에 시도했지만 작동하지 않습니다! 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 '. 당신이 자식 함수의 'L'이 '0'(잎은 자식이 없기 때문에 : D)이고 부모 함수에 영향을 미친다고 생각하기 때문에 JS의 변수 범위 문제로 인한 것 같습니다.
는 여기에 내가 시도 디버깅 코드입니다 :
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