2010-05-21 7 views
0

GWT에서 요소의 노드 이름을 변경할 수 있습니까? Element에 대한 setNodeName() 방법이없는 상태요소의 노드 이름을 변경 하시겠습니까?

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

:이 같은 것을 의미한다.

나는 기본 태그 대신에 어떤 힌트를 <div>some contents</div>

감사를 <mydiv>some contents</mydiv>을 취득하고 싶습니다.

답변

2

HTML 위젯의 요소 노드 이름을 변경할 수 없습니다. 그러나 Document.get().createElement("mydiv")으로 자신의 태그를 만들고이를 사용하여 Composite을 확장하여 Widget을 새로 만들 수 있습니다. 그러나 DOM에 새 태그를 추가하고 HTML을 확장하면 원하는 내용으로 들리지 않으므로 이유를 모르겠습니다. innerText과 같은 메소드를 통해이 태그의 콘텐츠를 설정하는 것은 유효한 태그에만 사용할 수 있기 때문에 불가능합니다. 내용을 유지하고, 예를 들어

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 
} 

속성

1

변경 태그 이름 상태 :

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

changeTagName(document.getElementById('sp1'),'pre'); 
관련 문제