Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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元素的函数 function dom(tag,attr,inner){ var tag = document.createElement(tag); for (var key in attr) { if (attr.hasOwnProperty(key)) { tag.setAttribute(key,attr[key]); } } tag.innerHTML = inner;

我正在尝试创建一个生成dom元素的函数

function dom(tag,attr,inner){
    var tag = document.createElement(tag);
    for (var key in attr) {
        if (attr.hasOwnProperty(key)) {
            tag.setAttribute(key,attr[key]);
        }
    }
    tag.innerHTML = inner;
    document.body.appendChild(tag);
}
dom('div',{class : 'test',id : 'test'},'hello world');
由于函数
dom
输出错误,似乎没有创建此标记:

Uncaught TypeError: Cannot read property 'appendChild' of null all.js:438

我怎样才能做对呢?谢谢。

all.js在哪里?如果all.js位于head元素中,则需要在onload或domcontentload之后运行代码

// DOMContentLoaded or load
window.addEventListener("DOMContentLoaded", function(){
    dom('div',{class : 'test',id : 'test'},'hello world');
}, false);

是保留标记,不能将其用作密钥。 因此,您必须为该类获取另一个键,并在循环中检查它,如下所示:

function dom(tag,attr,inner){
        var el = document.createElement(tag);
        for (var key in attr) {
        if (attr.hasOwnProperty(key)) {
            el.setAttribute(key,attr[key]);
        }

        if (key=="OtherIdentifierForClass"){
            el.setAttribute("class",attr[key]);
        }
    }
    el.innerHTML = inner;
    document.body.appendChild(el);
}
dom('div',{OtherIdentifierForClass : 'test',id : 'test'},'hello world');
此外,不要将您的元素命名为“tag”,请使用更具描述性的名称


这是一个更大的库的一部分,而
文档是另一部分吗?你在页面中有正文吗?没有。我还尝试将此标记附加到此函数外部,但没有任何更改。您可以在函数内部执行
console.log(document)
操作并显示其结果。您好,请检查此答案-假设将有助于@putvande,我已尝试使用
console.log(document)
。一个it输出
#文档
。我认为在那里使用
作为标识符是可以的。你有错误吗?事实上是的。如果这不是错误的话,那么可能会重用“tag”作为变量名。无论如何,它的工作,因为我为我张贴。如果这些不是错误,那么代码的其余部分肯定有问题。请参见此处,将类作为键:这不起作用,并给出警告。