[Javascript] HTMLのタグ以外の文字列部分のみを置換する処理(マルチ階層対応)
function replaceSpacesInTextNodes(element, searchValue, replaceValue) {
// 指定された要素の全ての子要素を走査する
element.childNodes.forEach(node => {
if (node.nodeType === Node.TEXT_NODE) {
// テキストノードの場合、指定された置換を行う
node.textContent = node.textContent.replace(new RegExp(searchValue, 'g'), replaceValue);
} else {
// 子要素がある場合、再帰的に処理する
replaceSpacesInTextNodes(node, searchValue, replaceValue);
}
});
}
// 使用例
document.addEventListener("DOMContentLoaded", () => {
// HTML全体を対象にする場合はdocument.bodyを渡す
replaceSpacesInTextNodes(document.body, ' ', '置換後の文字列');
});