タイトルが示すように、個人的な演習として 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 を見つけたように見えます...しかし、return/ results.concat(results) ステップは失敗したようです。:/
受験者は私が見逃しているものを見ることができますか? :)