是否可以在GWT中更改元素的节点名称?我的意思是这样的:
HTML h = new HTML();
h.getElement().setNodeName("mydiv")
虽然setNodeName()
没有Element
方法。
我想获取<mydiv>some contents</mydiv>
而不是默认代码<div>some contents</div>
感谢任何提示。
答案 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');