我創建了一個簡單的函數來執行類似於getElementsByClassName()的任務。它應該遍歷DOM中的每個節點,並將具有匹配類的節點推送到一個數組中。我試圖使用類似Crockford的walk_the_DOM方法,但是,我的工作不正常。該函數檢索第一個DOM級別上的節點,但不會更深入。有人能給我一個提示,指出哪裏出了問題?下面的代碼:DOM行走功能不起作用
var getNodesWithClassname = function(classname) {
var a = document.body;
var ar = [];
var getNodes = function(obj, classname) {
if (obj.hasChildNodes()) {
var child = obj.firstElementChild;
while (child) {
if (child.className === classname) {
ar.push(child)
}
child = child.nextElementSibling;
}
}
}
getNodes(a, classname);
return ar;
};
它是如何*不*工作? – Joseph
任何地方都沒有遞歸,這對於你的代碼只能遍歷一個層次起到很大的作用。 – Brian