DanMan, Maarten 및 Matt에 대한 답변. 텍스트를 설정하기 위해 노드를 복제하는 것은 실제로 내 결과에 실용적인 방법입니다.
// @param {node} node
// @return {node} empty node
function removeAllChildrenFromNode (node) {
var shell;
// do not copy the contents
shell = node.cloneNode(false);
if (node.parentNode) {
node.parentNode.replaceChild(shell, node);
}
return shell;
}
// use as such
var myNode = document.getElementById('foo');
myNode = removeAllChildrenFromNode( myNode );
또한 이것은 부모 노드에 액세스하려고 할 때 null을 반환하는 DOM에없는 노드에서 작동합니다. 또한 안전해야 할 경우 컨텐츠를 추가하기 전에 노드가 비어 있으면 실제로 도움이됩니다. 아래의 사용 사례를 고려하십시오.
// @param {node} node
// @param {string|html} content
// @return {node} node with content only
function refreshContent (node, content) {
var shell;
// do not copy the contents
shell = node.cloneNode(false);
// use innerHTML or you preffered method
// depending on what you need
shell.innerHTML( content );
if (node.parentNode) {
node.parentNode.replaceChild(shell, node);
}
return shell;
}
// use as such
var myNode = document.getElementById('foo');
myNode = refreshContent( myNode );
요소 내부의 문자열을 바꿀 때이 방법이 매우 유용하다는 것을 알았습니다. 노드를 정리하는 방법을 걱정하지 않고 노드에 무엇을 포함할지 확실하지 않은 경우 새로 시작하십시오.