Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未通过生成器函数添加到DOM的元素_Javascript_Dom - Fatal编程技术网

Javascript 未通过生成器函数添加到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

我一直在努力使这个简单的代码工作。它应该呈现给定DOM中的输入字段,但它没有。为什么不呢

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将始终为空。