0
我試圖重新實現函數getElementsByClassName。作爲我的函數的一部分,我想遞歸調用我的函數在元素的子元素/自己的子節點上。不知何故無法將值傳遞給導致typeError的函數
儘管在控制檯日誌記錄中,我將一個具有子節點的值傳遞給該函數,但當我在遞歸調用它的控制檯後立即記錄元素時,它說我的元素是未定義的,因此在我問獲取其子節點。
這是我的代碼。
var getElementsByClassName = function(className) {
var results = [];
function inner(element) {
console.log(element); //eventually says undefined unexpectedly
var children = element.childNodes;
console.log(Array.isArray(children));
for (var i = 0; i < children.length; i++){
console.log("the class list is: ", children[i].classList);
if (children[i].classList !== undefined){
if (children[i].classList.value === className) {
results.push(children[i]);
}
}
console.log("the child nodes are: ", children[i].childNodes);
if (children[i].childNodes.length !== 0){
console.log("the one that's supposed to have child nodes is", children[i]); //lists an element w/ child nodes
return inner(document[children[i]]);
}
}
return results;
}
return inner(document.body);
};
console.log(getElementsByClassName("targetClassName"));
console.log(document.getElementsByClassName("targetClassName"))
這沒有奏效。在參數列表後給我錯誤Uncaught SyntaxError:missing)。然而'''中的圓括號返回inner(children [i]]);'''是正確的 – MattGoldwater