我想知道怎么用纯 JavaScript 改变一个标签。
<span>some text</span>
我希望将其更改为那样
<div>some text</div>
我不知道如何做到这一点。
我想知道怎么用纯 JavaScript 改变一个标签。
<span>some text</span>
我希望将其更改为那样
<div>some text</div>
我不知道如何做到这一点。
var e = document.getElementsByTagName('span')[0];
var d = document.createElement('div');
d.innerHTML = e.innerHTML;
e.parentNode.replaceChild(d, e);
e.parentNode.replaceChild(d, e);
,但是 +1 ;-) - I Hate LazyinsertBefore()
和 removeChild()
是错误的? - Shayan<span class="foo">bar</span>
,它仍然会生成结果HTML <div>bar</div>
。 - Loko Web Designdocument.querySelectorAll(".yuRUbf a").forEach(e=>e.parentNode.replaceChild(Object.assign(document.createElement("div"),{innerHTML:e.innerHTML}),e));
- Ninh PhamreplaceWith
方法比replaceChild
更近期添加。请检查支持信息,以确定它是否存在于您需要支持的浏览器版本中。 - Guffa(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')
$('span').each(function() {
$(this).replaceWith($('<div>' + this.innerHTML + '</div>'));
});
这里有一个JSFIDDLE工作的演示
var original_html = document.getElementById('foo').innerHTML;
original_html = original_html.replace("<span>", "<div>");
original_html = original_html.replace(new RegExp("</span>"+$), "</div">)
document.getElementById('foo').innerHTML=original_html;
如果您无法保证该跨度被一个元素紧密包裹(可以通过ID或其他方式进行一致获取),那么JavaScript会变得相当复杂。无论哪种情况,真正的答案是:使用jQuery。
Var spantxt = $('span').text();
$('body').append('<div>'+spantext+'</div');
你不能这样做。 你想要做的是获取你的标签的内容, 然后删除它并创建一个新的