使用 javascript 更改标签

IT技术 javascript html
2021-02-19 08:50:50

我想知道如何使用纯 javascript 更改标签

    <span>some text</span>

我想把它改成那个

  <div>some text</div>

我不知道该怎么做。

6个回答

您不能像这样更改元素的类型,而是必须创建一个新元素并将内容移入其中。例子:

var e = document.getElementsByTagName('span')[0];

var d = document.createElement('div');
d.innerHTML = e.innerHTML;

e.parentNode.replaceChild(d, e);

演示:http : //jsfiddle.net/Guffa/bhnWR/

@Guffa:e.parentNode.replaceChild(d, e);但是+1 ;-)
2021-04-22 08:50:50
@IHateLazy @bdkopen为什么insertBeofre()removeChild()错误?
2021-04-24 08:50:50
1 行版本: document.querySelectorAll(".yuRUbf a").forEach(e=>e.parentNode.replaceChild(Object.assign(document.createElement("div"),{innerHTML:e.innerHTML}),e));
2021-05-07 08:50:50
我意识到最初的问题并没有要求这个,但这并没有任何属性。换句话说,如果原始 HTML 是<span class="foo">bar</span>,它仍然会生成结果 HTML <div>bar</div>
2021-05-11 08:50:50

刚刚为此编写了一个 jQuery 插件。

(function( $ ) {
  $.fn.replaceTag = function(newTag) {
    var originalElement = this[0]
    , originalTag = originalElement.tagName
    , startRX = new RegExp('^<'+originalTag, 'i')
    , endRX = new RegExp(originalTag+'>$', 'i')
    , startSubst = '<'+newTag
    , endSubst = newTag+'>'
    , newHTML = originalElement.outerHTML
    .replace(startRX, startSubst)
    .replace(endRX, endSubst);
    this.replaceWith(newHTML);
  };
})(jQuery);

用法:

$('div#toChange').replaceTag('span')

这种方法最大的优点是id保留了原始元素的所有属性。

他明确要求提供“纯 javascript”答案。
2021-05-15 08:50:50

如果 jquery 是可以接受的,请使用 replaceWith。

$('span').each(function() {
    
  $(this).replaceWith($('<div>' + this.innerHTML + '</div>'));
 
});

这是一个 JSFIDDLE 工作演示

或者不使用 jquery 和稍微不同的情况:jsfiddle.net/CvRq2
2021-04-26 08:50:50

如果使用 jquery

 Var spantxt = $('span').text();
 $('body').append('<div>'+spantext+'</div');

请注意,这仅在只有一个跨度时才有效,否则请使用 id 选择器

2021-04-19 08:50:50

你不能这样做。你想要做的是获取你的内容span,然后删除它并创建新的div并用以前的内容填充它。