2010-05-21 126 views
0

是否可以在GWT中更改元素的節點名稱?我的意思是這樣的:更改元素的節點名稱?

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

雖然對Element沒有setNodeName()方法。

我想獲得<mydiv>some contents</mydiv>而不是默認標籤的<div>some contents</div>

感謝您的任何提示。

回答

2

您不能更改HTML小部件的元素節點名稱。但是,您可以使用Document.get().createElement("mydiv")創建自己的標籤,然後通過擴展Composite來創建新的Widget。但是,我不確定爲什麼要這樣做,因爲向DOM添加新標籤並從而擴展HTML聽起來並不是你應該想要的。通過innerText等方法設置此標籤中的內容是不可能的,因爲它們僅適用於有效標籤。

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');