首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用内置DOM方法或原型从HTML字符串创建新的DOM元素

使用内置DOM方法或原型从HTML字符串创建新的DOM元素
EN

Stack Overflow用户
提问于 2009-01-30 09:13:45
回答 23查看 736K关注 0票数 776

我有一个表示元素的超文本标记语言字符串:'<li>text</li>'。我想把它附加到DOM中的一个元素(在我的例子中是一个ul )。我如何使用Prototype或DOM方法来实现这一点?

(我知道在jQuery中可以很容易做到这一点,但不幸的是,我们没有使用jQuery。)

EN

回答 23

Stack Overflow用户

发布于 2017-10-29 06:03:46

使用insertAdjacentHTML()。它适用于所有当前的浏览器,甚至与IE11。

代码语言:javascript
运行
复制
var mylist = document.getElementById('mylist');
mylist.insertAdjacentHTML('beforeend', '<li>third</li>');
代码语言:javascript
运行
复制
<ul id="mylist">
 <li>first</li>
 <li>second</li>
</ul>

票数 175
EN

Stack Overflow用户

发布于 2017-02-25 05:48:42

不需要任何调整,你得到了一个原生的API:

代码语言:javascript
运行
复制
const toNodes = html =>
    new DOMParser().parseFromString(html, 'text/html').body.childNodes[0]
票数 37
EN

Stack Overflow用户

发布于 2015-12-17 19:42:42

对于其他答案中提到的某些html片段,如<td>test</td>、div.innerHTML、DOMParser.parseFromString和range.createContextualFragment (没有正确的上下文),不会创建<td>元素。

jQuery.parseHTML()正确地处理它们(我提取了可以在非jquery代码库中使用的jQuery 2's parseHTML function into an independent function )。

如果您只支持边缘13+,则只使用HTML5模板标记会更简单:

代码语言:javascript
运行
复制
function parseHTML(html) {
    var t = document.createElement('template');
    t.innerHTML = html;
    return t.content;
}

var documentFragment = parseHTML('<td>Test</td>');
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/494143

复制
相关文章

相似问题

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