2011-02-14 7 views
4

나는이 HTML이 :Javascript : 노드 이름을 변경하는 방법은 무엇입니까? 예를 들어

<body> 
    <div>Text</div> 
</body> 

을 그리고 p 같은 다른 뭔가에 div을 변경하고 싶습니다.

내가 시도 것입니다하지만 작업을 수행합니다

var div = document.getElementsByTagName("div")[0]; // Get Element 
    div.nodeName = "p"; // Change It's Node Name to P 

더 라이브러리주세요, 나는 정말 새로운 페이지 :

답변

8

당신과 실제 DIV를 대체하고 싶지 않아 요소를 바꿀 수는 없습니다. 새 것을 만들어야합니다. 예 : 원래 요소에 새 노드의 하위 노드가 될 수없는 노드가 포함되어 있으면 잘못된 마크 업이 발생할 수 있습니다. 참조

: document.createElement, Node.replaceChild

+0

글쎄, 내가 한거야,하지만 거기에 어떤 사전 정의 된 자바 스크립트 함수 또는 뭔가? :) – Adam

+0

@CIRK : 아니오 :) ... –

+0

Mozzila가 말한 것처럼 다른 사람들도 내 의견에 대한 답을 얻었습니다. 아마도 이것이 최선의 방법 일 것입니다. :) – Adam

1

당신은 할 수 없습니다.

nodeName는 읽기 전용 특성은 다음과 같습니다

the MDC docs say으로.

당신은 새로운 요소를 생성하고 올바른 내용과 속성을 부여해야합니다.

1

수 없습니다. 태그 속성은 나중에 읽을 수 있습니다. 대신 원하는 유형의 새 노드를 만든 다음 innerHTML (및 className 또는 스타일과 같은 다른 속성)을 새 노드로 전송해야합니다. 그런 다음 새 노드를 이전 노드의 상위 노드에 삽입 한 다음 이전 노드를 제거하거나 replaceChild를 사용하십시오.

즉, 긴 길만이 유일한 길입니다.