更改元素的节点名称?

时间:2010-05-21 06:53:10

标签: html dom gwt

是否可以在GWT中更改元素的节点名称?我的意思是这样的:

HTML h = new HTML();
h.getElement().setNodeName("mydiv")

虽然setNodeName()没有Element方法。

我想获取<mydiv>some contents</mydiv>而不是默认代码<div>some contents</div>

感谢任何提示。

2 个答案:

答案 0 :(得分:2)

您无法更改HTML窗口小部件的元素节点名称。但是,您可以使用Document.get().createElement("mydiv")创建自己的标记,并通过扩展Widget使用该标记创建新的Composite。但是,我不确定你为什么要这样做,因为向DOM添加新标签从而扩展HTML听起来并不像你想要的那样。无法通过innerText等方法设置此代码中的内容,因为它们仅适用于有效代码。

答案 1 :(得分:1)

在保留内容和属性的同时更改标记名称

function changeTagName(elm,new_tag_name){
  var newElm = document.createElement(new_tag_name)
  var atr = elm.attributes;       
  for(var i=0;i<atr.length;i++){  // copy all atributtes
     newElm.setAttribute(atr[i].name,atr[i].value)
  } 
  document.body.insertBefore(newElm,elm)
  newElm.innerHTML=elm.innerHTML; //copy the content
  elm.parentNode.removeChild(elm)  // remove original 
}

例如:

<span id='sp1' class='cl1 cl2'> some t  e x t with   (\n)         gaps .... and etc</span>

changeTagName(document.getElementById('sp1'),'pre');