Я пытаюсь повторно реализовать функцию getElementsByClassName. В рамках моей функции я хочу рекурсивно вызывать свою функцию на дочерних элементах элемента с его дочерними узлами.как-то не может передать значение функции, ведущей к типуError
Однако, несмотря на ведение журнала консоли, что я передаю значение w/дочерние узлы в функцию, когда я консоль регистрирую элемент сразу после того, как я его рекурсивно вызвал, он говорит, что мой элемент не определен, и поэтому он терпит неудачу, когда я спрашиваю для получения его дочерних узлов.
Вот мой код.
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) после списка аргументов. Все же скобки в '' 'return inner (children [i]]),' '' правильны – MattGoldwater