我想知道我们是否可以在标签中更改标签名称而不是其内容。我有这个内容
<wns id="93" onclick="wish(id)">...</wns>
在wish
函数中,我想将其更改为
<lmn id="93" onclick="wish(id)">...</lmn>
我试着这样做:
document.getElementById("99").innerHTML = document.getElementById("99").replace(/wns/g,"lmn");
但它不起作用。
请注意,我只想用特定的id修改特定的标签,而不是每个wns
标签。
6条答案
按热度按时间0yycz8jy1#
您不能更改现有DOM元素的标记名称;相反,您必须创建一个替换,然后将其插入到元素所在的位置。
其基本操作是将子节点移动到替换中,并以类似的方式复制属性。例如:
示例:(我使用了
div
和p
,而不是wns
和lmn
,并通过带边框的样式表对它们进行了样式化,以便您可以看到更改)有关可重用函数,请参见this gist。
旁注:我会避免使用全是数字的
id
值。虽然它们在HTML中是有效的(从HTML5开始),但它们在CSS中是无效的,因此你不能对这些元素进行样式化,也不能使用像jQuery这样使用CSS选择器的库来与它们进行交互。g0czyy6m2#
FIDDLE
rdrgkggo3#
你的代码有几个问题:
document.getElementById("99").replace(/wns/g,"lmn")
实际上是在元素上运行替换命令。Replace是一个字符串方法,因此这会导致错误。1.您试图将此结果分配给
document.getElementById("99").innerHTML
,这是元素内部的HTML(标签,属性等都是outerHTML
的一部分)。1.您不能动态更改元素的标记名,因为它从根本上改变了元素的性质。假设将
textarea
更改为select
...有太多的属性对一个是独占的,对另一个是非法的:系统无法工作!你可以做的是创建一个新元素,并给予它旧元素的所有属性,然后替换它:
使用以下脚本:
示例:http://jsfiddle.net/barney/kDjuf/
xfb7svmp4#
您可以使用jQuery替换整个标记
zaq34kh65#
z3yyvxxp6#
您可以使用JavaScript或jQuery来实现这一点。
我们可以删除DOM元素(在本例中为标记),并在jQuery中使用.html或.append方法重新创建。
或