ワーキングデモ
ここでは、JavaScript 変数の巻き上げを扱っています。この行を削除するvar elems = null;
と、コードが機能するはずです。
JavaScript では、すべての変数を関数本体の先頭で宣言することがベスト プラクティスと見なされています。
JavaScript巻き上げの詳細については、この記事を参照してください。
ベスト プラクティスについて議論しているので、ループ内に要素を追加することはパフォーマンスにとって悪い考えであることに注意してください。createDocumentFragment
要素を追加してから、これを DOM にダンプするには、代わりに使用する必要があります。コストのかかるドキュメントのリフローを節約し、パフォーマンスに大きな違いをもたらします。
var elems = 10;
function generateElems() {
var d=document.createDocumentFragment();
for (var i = 0; i < elems; i++) {
d.appendChild(document.createElement('input'));
}
document.getElementsByTagName('div')[0].appendChild(d);
//Clean up
//var obj = null;
//var elems = null; ----> Commented out this line, it was causing the problem.
}
generateElems();