Вы можете использовать TreeWalker , чтобы найти все текстовые узлы, которые являются прямыми дочерними элементами вашего корневого элемента, и удалить их.
function removeChildTextNodes(root)
{
var treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ALL, {
acceptNode: function(node) { if(node.nodeType === 3) return NodeFilter.FILTER_ACCEPT },
}, true);
var currentNode = treeWalker.firstChild();
while(currentNode)
{
var removedNode = treeWalker.currentNode;
currentNode = treeWalker.nextNode()
removedNode.remove();
}
}
var root = document.querySelector('#parent');
removeChildTextNodes(root);
<div id="parent">
<img />
Some random text that can't be predicted (to be removed)
<div>keep this</div>
Some random text that can't be predicted (to be removed)
<h2>
keep this
</h2>
Some <strong>random</strong> text that can't be predicted (to be removed)
<a>keep this</a>
</div>