是否可以使用JavaScript将段落标记更改为标题标记?
我试图通过JavaScript中的ID将段落元素更改为是否可以使用JavaScript将段落标记更改为标题标记?,javascript,html,dom,Javascript,Html,Dom,我试图通过JavaScript中的ID将段落元素更改为h1 我的HTML <body> <p id="damn"> Hello </p> </body> 你好 我的JavaScript <script> document.getElementByID("damn").<required missing code to change to h1> </script> document.get
h1
我的HTML
<body>
<p id="damn"> Hello </p>
</body>
你好
我的JavaScript
<script>
document.getElementByID("damn").<required missing code to change to h1>
</script>
document.getElementByID(“该死”)。
要求的结果是
<body>
<h1 id="damn"> Hello </h1>
</body>
你好
这应该能奏效。使用。函数更改标记名(el,新标记名){
var n=document.createElement(newTagName);
var attr=el.attributes;
对于(变量i=0,len=attr.length;i
阅读第二个答案。请包括newElement.id=elem.id;这很接近,但它不会采取原始元素相对于其兄弟元素的位置。根据给定的示例,它的工作做得很好。示例中没有兄弟姐妹;)+1这应该是公认的答案。它维护所有原始元素属性,通过使用innerHTML而不是textContent,它将保留所有子元素(例如可能附加了样式的跨距)。
var elem=document.getElementById("damn");
var parent=elem.parentNode;
var newElement=document.createElement("h1");
newElement.textContent=elem.textContent;
newElement.id=elem.id;
parent.replaceChild(newElement, elem);
function changeTagName(el, newTagName) {
var n = document.createElement(newTagName);
var attr = el.attributes;
for (var i = 0, len = attr.length; i < len; ++i) {
n.setAttribute(attr[i].name, attr[i].value);
}
n.innerHTML = el.innerHTML;
el.parentNode.replaceChild(n, el);
}
changeTagName(document.getElementById('damn'), 'h1');