Javascript 未通过生成器函数添加到DOM的元素
我一直在努力使这个简单的代码工作。它应该呈现给定DOM中的输入字段,但它没有。为什么不呢Javascript 未通过生成器函数添加到DOM的元素,javascript,dom,Javascript,Dom,我一直在努力使这个简单的代码工作。它应该呈现给定DOM中的输入字段,但它没有。为什么不呢 var elems = 10; function generateElems() { for (var i = 0; i < elems; i++) { document.getElementsByTagName("div")[0].appendChild(document.createElement('input')); } //Clean up
var elems = 10;
function generateElems() {
for (var i = 0; i < elems; i++) {
document.getElementsByTagName("div")[0].appendChild(document.createElement('input'));
}
//Clean up
var obj = null;
var elems = null;
}
generateElems();
var-elems=10;
函数generateElems(){
对于(变量i=0;i
您在这里处理的是JavaScript变量。删除此行
var elems=null代码>并且您的代码应该可以工作
JavaScript中最好的做法是在函数体的顶部声明所有变量
有关JavaScript的更多信息,请阅读本文
在我们讨论最佳实践时,值得注意的是,在循环中附加元素对性能是一个坏主意。您应该使用createDocumentFragment
将元素附加到DOM中,然后将其转储到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();
var-elems=10;
函数generateElems(){
var d=document.createDocumentFragment();
对于(变量i=0;i注释掉了这一行,这是导致问题的原因。
}
生成元素();
不要将elms设置为null
var elems = 10;
function generateElems() {
for (var i = 0; i < elems; i++) {
document.getElementsByTagName("div")[i].appendChild(document.createElement('input'));
}
}
generateElems();
var-elems=10;
函数generateElems(){
对于(变量i=0;i
var elems=null代码>不是清理,是多余的代码破坏了脚本。您不需要以这种方式“清理”变量。我们还需要查看您的HTML结构。您的文档是否有DIV标签?什么是obj
?请向我们展示您的完整脚本和演示如何使用它(包括HTML标记)。使用该“清理”,您不能调用函数两次,但您当前发布的内容应该可以工作。由于javascript范围规则,elems将始终为空。