Javascript 更改元素类型,但保留class属性和文本内容

Javascript 更改元素类型,但保留class属性和文本内容,javascript,jquery,Javascript,Jquery,我希望在不丢失类的情况下替换标记元素。例如,我想用替换我所有的 我正在使用这个脚本,但它只改变第一个孩子,不保留类 function replaceElement(源代码,新类型){ //创建文档片段 const frag=document.createDocumentFragment(); //用源元素中的内容填充它 while(来源:firstChild){ frag.appendChild(来源:firstChild); } //创建新元素 const newElem=document.

我希望在不丢失类的情况下替换标记元素。例如,我想用
替换我所有的

我正在使用这个脚本,但它只改变第一个孩子,不保留类

function replaceElement(源代码,新类型){
//创建文档片段
const frag=document.createDocumentFragment();
//用源元素中的内容填充它
while(来源:firstChild){
frag.appendChild(来源:firstChild);
}
//创建新元素
const newElem=document.createElement(newType);
//将文档片段清空到其中
纽伦姆·阿佩奇尔德(frag);
//用页面上的新元素替换源元素
source.parentNode.replaceChild(newElem,source);
}
//替换为
replaceElement(document.querySelector('span.vc_tta-title-text'),'h2')

h2{颜色:红色;}
您可以在jQuery中实现这一点,方法是向
replaceWith()
提供一个函数,该函数返回要插入到DOM中的新
元素。试试这个:

$('span.vc_tta-title-text')。替换为(函数(){
返回`${$(this.text()}`;
});
h2{颜色:红色;}


对@Rory code[动态获取并将类添加到span元素]只做了一个小改动

$('span.vc_tta-title-text')。替换为(函数(索引,文本,e){
返回`${$(this.text()}`
});
h2{颜色:红色;}


是什么阻止了你,你犯了什么错误?@JuhilSomaiya我不知道你的评论是什么意思。OP显示了所有相关代码,并描述了问题及其目标。没有错误。@Rorymcrossan,先生,我想说的是,如果他到目前为止已经尝试过那个代码,他得到的输出是什么?有什么不起作用的吗?这样我们就可以直接跳过它并解决它。谢谢Rory。有没有一种不用jquery的方法?因为与jquery和我的其他脚本有冲突。我已经用Javascript版本更新了答案,尽管我不明白如果你不能使用jquery,为什么要用jquery标记这个问题。非常感谢Rory。现在很完美,没问题。如果答案有用,别忘了接受