2011-03-04 4 views
0

동적으로 생성 된 임시 요소를 제거하고 싶습니다.부모없는 HTML 요소 제거

x = document.createElement("DIV"); 
x.innerHTML = res; 
y = x.parentNode; 
x = y.removeChild(x); 
x = null; 

나는이 코드를 작성했으나 부모에게는 메모가 있기 때문에 작동하지 않습니다. 나는 첫 번째 노드를 유지하기 위해 두 번째 임시 노드를 만들 수 있지만 두 번째 노드를 삭제하려면 세 번째 노드가 필요하다는 것을 알고 있습니다. :) 여기 부모 노드가 필요없는 노드를 삭제하는 함수가 필요합니다. 또한 노드를 문서 객체에 직접 놓고 삭제할 수 있다고 생각하지만, 존재하는 경우보다 효율적인 솔루션을 찾고 있습니다.

+1

노드를 삭제해야하는 이유가 무엇이라고 생각하십니까? – Pointy

+1

DOM에 요소를 추가하지 않으면 DOM AFAIK에서 요소를 제거 할 필요가 없습니다. –

+0

현재이 질문은 이전 질문과 거의 같습니다. http://stackoverflow.com/questions/5194924/does-removechild-really-delete-the-element – RoToRa

답변

4

DOM에 추가되지 않았으므로 노드를 제거 할 필요가 없습니다. 변수를 null으로 설정하면 요소가 사라집니다. 일반적으로 DOM 노드는 모델에 추가되면 항상 부모를 갖지만 여기서는 코드에서 수행하지 않습니다.

1

removeChild은 문서에서 요소를 제거한 것입니다. 요소가 문서의 일부가 아니므로 요소를 사용할 필요가 없습니다. 코드에서 요소에 대한 참조를 유지하지 않았는지 확인하십시오 (예 : 변수를 null으로 설정하는 등). JavaScript 자동 가비지 수집이 나머지를 처리합니다.

변수가 함수의 로컬 변수 인 경우 변수가 자체에 존재하지 않기 때문에 변수를 null으로 설정할 필요조차 없습니다.

JavaScript에서 개체를 "삭제"하는 직접적인 방법은 없습니다.

+0

개체 **는 특정 제한 사항이 있으면 삭제할 수 있습니다 ** - https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/delete_Operator –

+0

흠. 'delete' 연산자는 객체 자체의 속성이 아니라 객체의 속성을 제거합니다. 여기서는'null '(또는'undefined')으로 설정하는 것을 더 이상하지 않습니다. – RoToRa