Как упоминается в заголовке, я попытался переписать getElementByClassName как личное упражнение, но я столкнулся с каким-то неожиданным поведением с рекурсивным возвратом результатов.Попытка переписать getElementByClassName, запуская рекурсивную привязку
Document.prototype.getElementsByClassNameExercise = function(className, tempElement){
var currentElement = (tempElement || document),
children = currentElement.childNodes,
results = [],
classes = [];
// Loop through children of said element
for(var i =0;i<children.length;i++){
if(children[i].className && children[i].className !== '') {
classes = children[i].className.split(' ');
// Important to note, forEach is not ie8 safe.
classes.forEach(function(singleClass){
if(singleClass === className) {
results.push(children[i]);
}
});
}
results.concat(Document.prototype.getElementsByClassNameExercise.call(this, className, children[i]));
}
return results;
}
Я попытался это на моей странице, и это, кажется, успешно анализировать все элементы DOM и найти Classname ... но/results.concat (результаты) шаг возвращения, кажется, терпят неудачу. :/
Любые участники могут видеть то, что мне не хватает? :)
Вау, это было быстро! Я должен подождать еще 9 минут, чтобы установить флажок. Не могу поверить, что я пропустил это, спасибо! – TheIronDeveloper
@ TheIronDeveloper: добро пожаловать, рад, что это помогло. В будущем, возможно, этот вопрос лучше подходит для [CodeReview.SE] (http://codereview.stackexchange.com/), так как вы действительно не искали объяснения конкретной проблемы или технической проблемы, но были пытаясь заставить кого-то просмотреть ваш код. – haylem
Спасибо, что помогли мне и вежливо перенаправили меня. Я обязательно отправлю сообщения, связанные с кодом, в этом разделе. :) – TheIronDeveloper