Als Antwort auf DanMan, Maarten und Matt. Das Klonen eines Knotens, um den Text festzulegen, ist in der Tat ein praktikabler Weg für meine Ergebnisse.
// @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 );
Dies funktioniert auch für Knoten, die sich nicht im Dom befinden und beim Versuch, auf den parentNode zuzugreifen, null zurückgeben. Wenn Sie sicher sein müssen, dass ein Knoten leer ist, bevor Sie Inhalte hinzufügen, ist dies sehr hilfreich. Betrachten Sie den Anwendungsfall darunter.
// @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 );
Ich finde diese Methode sehr nützlich, wenn Sie eine Zeichenfolge innerhalb eines Elements ersetzen. Wenn Sie nicht sicher sind, was der Knoten enthalten soll, anstatt sich Gedanken darüber zu machen, wie das Chaos beseitigt werden soll, beginnen Sie neu.