开发者问题收集

div-createElement 不起作用?

2015-02-11
3180

我正在尝试使用 javascript 创建 div 标签。但是为什么它不起作用? 我见过 document.createElement 不起作用

Javascript createElement() 在 Chrome 中不起作用 但这些答案不适合我的脚本。

<html>
<head>
<script>
var div = '<div id = con style="width:auto; height:200px; Background:#2a2a2a">';
var x = document.createElement(div);
var y = document.getElementById('con');
y.innerHTML = "hello world";
document.body.appendChild(x);
</script>
</head>
<body>
</body>
</html>

我该怎么做?

3个回答

它不能像这样工作。 .createElement() 仅接受您要创建的元素的 类型 ,没有预定义的 HTML 代码段。因此,您必须使用 document.createElement('div'); 创建 Div 元素,然后处理该元素。就像

例如

var div = document.createElement('div');
    div.id = 'con';
    div.style.cssText = "width:auto; height:200px; Background:#2a2a2a";

document.body.appendChild( div );

如果您不需要对 Element 的引用,而只想插入新的 HTML 代码,您也可以使用 Element.prototype.insertAdjacentHTML() ,如下所示

document.body.insertAdjacentHTML( 'beforeend', '<div id="con" style="width:auto; height:200px; Background:#2a2a2a">');

此处代码的另一个问题是您尝试过早访问 DOM。即使代码 可以 以当前形式运行,您也无法在 <head> 部分中访问 document.body ,因为此时它尚未完全初始化。将整个 <script> 源移至 <body> 部分,或将监听器附加到 DOMContentLoaded 事件。

jAndy
2015-02-11

如果您想一次性插入整个 HTML 结构,您可以使用非常有用、跨浏览器且鲜为人知的 insertAdjacentHTML 方法:

var div = '<div id="con" style="width:auto; height:200px; Background:#2a2a2a"></div>';
document.body.insertAdjacentHTML('beforeend', div);
var y = document.getElementById('con');
y.innerHTML = "hello world";
dfsq
2015-02-11

您无法创建这样的预定义 html,而且由于您要附加到正文,因此脚本应该位于 body 元素内,而不是在 head 中

<html>
    <head>
    </head>
    <body>
        <script>
            var x = document.createElement('div');
            x.id = 'con';
            x.style.width = 'auto';
            x.style.height = '200px';
            x.style.background = '#2a2a2a';
            x.innerHTML = "hello world";
            document.body.appendChild(x);
            //no need to access `y` by id, use the reference returned by createElement to set the content
            //var y = document.getElementById('con');
            //y.innerHTML = "hello world";
        </script>
    </body>
</html>
Arun P Johny
2015-02-11