2012-01-12 7 views
1

복제 노드를 복사하고 복사 된 노드에 바로 다음에 을 삽입하려면 자바 스크립트 (JQuery 등 아님) 코드가 필요합니다. 예를 들면.노드 복제 및 xml에 추가

<a> 
    <b> 
     <ab></ab> 
     <bc></bc> 
    </b> 
</a> 

이제 어떤 몸이 나에게이어야 Mozilla2에서 지원되는 일부 코드 예제를 보여 주면

<a> 
     <b> 
      <ab></ab> 
      <bc></bc> 
     </b> 
     <!-- this is the copied node that will be appended. --> 
     <b> 
      <ab></ab> 
      <bc></bc> 
     </b> 
     <!-- copied node ends here. --> 
    </a> 

내가 감사해야한다, 소스 XML에서 <b> 노드를 복사하고 그것으로 다음 형제 노드를 추가 한 후 및 IE5 +. CloneNode 메서드는 많은 기본 브라우저의 여러 원시 버전에서 제대로 작동하지 않습니다. 그러나 CloneNode는 모든 IE 브라우저에서 지원됩니다. 그래서 cloneNode 메소드는 해결책이 될 수 없습니다. alerts은 XML이 전후 속에서 보여줄 것이다

var node = document.getElementById("toBeCloned"); 
var parentNode = node.parentNode; 
alert(parentNode.outerHTML); 
var clonedNode = node.cloneNode(true); 
clonedNode.removeAttribute("id"); 
parentNode.appendChild(clonedNode); 
alert(parentNode.outerHTML); 

:

답변

2

당신이 ID에 의해 필요한 노드를 받고 있다고 가정하면, 여기에 기존 노드를 복제하고 형제 노드로 복제를 추가 할 수있는 방법 삽입.

이 코드는 Mozilla와 모든 적당한 버전의 IE에서 작동합니다. 나는 IE5에 IE5 지원을 보장 할 수 없다. 왜냐하면 나는 그 브라우저에 접근 할 수 없기 때문이다.

+0

Abbas라는 코드를 작성해 주셔서 감사합니다. 그러나 cloneNode 메서드가 기존 브라우저의 기본 버전에서 제대로 작동하지 않는다고 언급했습니다. 내 프로그램이 오래된 브라우저 자체를 타겟으로하기 때문에 cloneNode 메소드가 아닌 다른 것을 필요로한다. – Acn

+0

이 경우 createElement를 사용해야합니다. 그러나이 방법의 문제점은 주어진 노드 내에있는 모든 자식 노드를 직접 만들어야한다는 것입니다. 이는 재귀 적으로 노드를 거치고, 자식 노드의 이름을 얻고, createElement 메소드를 호출하고, 부모 노드에 새 노드를 추가한다는 것을 의미합니다. – Abbas