首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >appendChild + createElement

appendChild + createElement
EN

Stack Overflow用户
提问于 2010-05-24 15:07:20
回答 5查看 87.2K关注 0票数 22

这两者有什么不同:

var div = document.createElement('div');//output -> [object HTMLDivElement]

document.getElementById('container').appendChild(div);

和:

var div = '<div></div>';

document.getElementById('container').appendChild(div);//output -> <div></div>

两者不应该是一样的吗?如果不是,我如何让第二个版本工作?

EN

回答 5

Stack Overflow用户

发布于 2010-05-24 15:14:08

使用JS/DOM引擎,使用string作为参数调用Element.appendChild会创建一个新的Text节点,然后添加。

第一个示例创建一个<div>元素。第二个示例创建了一个内容为<div></div>的文本节点。

您的第二个示例相当于:

var div = '<div></div>';

document.getElementById('container').appendChild(document.createTextNode(div));//output -> <div></div>

作为Sarfraz Ahmed mentioned in his answer,您可以通过编写以下代码来使第二个示例按照您希望的方式工作:

var div = '<div></div>';

document.getElementById('container').innerHTML = div;
票数 10
EN

Stack Overflow用户

发布于 2010-05-24 15:12:44

appendChild确实需要某种类型的HTMLDomNode,比如HTMLDivElement,而不是字符串。它不知道如何处理字符串。你可以这样做

document.getElementById('container').innerHTML += div;

但我真的更喜欢第一个版本;我更依赖于它来在不同的浏览器上表现出相同的行为。

票数 4
EN

Stack Overflow用户

发布于 2010-05-24 15:11:50

appendChild需要一个元素,所以当你向它发送文本时,它不知道该怎么做。您可能希望考虑使用javascript库来简化某些工作,比如jQuery。你的代码应该是:

$('#container').append('<div></div>');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2895318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档