Javascript:如何更改节点名称? [英] Javascript: How to change a nodes name?

查看:104
本文介绍了Javascript:如何更改节点名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我有以下HTML:

For example I have this HTML:

<body>
    <div>Text</div>
</body>

我想更改 div p 之类的东西。

And I would like to change the div to something else like p.

这是我尝试过但不起作用的:

This is what I have tried but doesn't works:

var div = document.getElementsByTagName("div")[0]; // Get Element
    div.nodeName = "p"; // Change It's Node Name to P

请不要使用任何库,并且我真的不想替换带有一个新p的实际div:)

Please no libraries, and I don't really want to replace the actual div with a new p :)

推荐答案

您不能只更改元素。您必须创建一个新的。例如:

You cannot just change an element. You have to create a new one. E.g.:

var div = document.getElementsByTagName("div")[0];
var p = document.createElement('p');
p.innerHTML = div.innerHTML;
div.parentNode.replaceChild(p, div);

但这会导致无效的标记,如果原始元素包含的节点不能成为新元素的后代节点。

But this could lead to invalid markup, if the original element contains nodes that cannot be descendants of the new node.

参考: document.createElement Node.replaceChild

注意:可以在 https:/中找到更好的版本(因为它不依赖于将DOM序列化为文本并返回并保留属性)。 /stackoverflow.com/a/8584158/218196

这篇关于Javascript:如何更改节点名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆