如何在忽略 html 标签的同时用   替换所有空白 space
How to replace all blank space with   while ignoring html tags
我将 div 元素中的所有 space 替换为 这样我就可以使用 JavaScript 文件轻松读取所有 space。当我对此进行编码时,我意识到 div 中的元素会变得混乱,因为像 ids 这样的属性需要标签名称之间的 spaces,而 属性 将被替换以破坏标签。我怎么能忽略标签和名称之间的 space 而只替换文本 spaces.
代码:
let el = document.getElementById('parent');
function replaceText() {
let text = el.innerHTML.split(' ').join(' ');
el.innerHTML = text;
console.log(text);
}
//I dont want the span tag or em tag to get messed up by this
<!DOCTYPE html>
<html>
<body>
<div id='parent'>
Lorem ipsum
<span id='element'>
<em id='child'>dolor sit amet</em>
</span>
</div>
<button onclick='replaceText()'>Change with nbsp</button>
</body>
</html>
我能想到的最好的方法是在元素中查找文本节点。您需要递归调用该函数,直到没有更多文本节点为止。下面是一些帮助您入门的示例代码。
function replaceText(element) {
for (let childNode of element.childNodes) {
if (childNode.nodeType === Node.TEXT_NODE) {
childNode.data = ' ' + childNode.data.trim().replace(/ /g, '\u00a0') + ' '
continue
}
// Recursively replace text for child node
replaceText(childNode)
}
}
<!DOCTYPE html>
<html>
<body>
<div id='parent'>
Lorem ipsum
<span id='element'>
<em id='child'>dolor sit amet</em>
</span>
</div>
<button onclick='replaceText(document.getElementById("parent"))'>Change with nbsp</button>
</body>
</html>
我将 div 元素中的所有 space 替换为 这样我就可以使用 JavaScript 文件轻松读取所有 space。当我对此进行编码时,我意识到 div 中的元素会变得混乱,因为像 ids 这样的属性需要标签名称之间的 spaces,而 属性 将被替换以破坏标签。我怎么能忽略标签和名称之间的 space 而只替换文本 spaces.
代码:
let el = document.getElementById('parent');
function replaceText() {
let text = el.innerHTML.split(' ').join(' ');
el.innerHTML = text;
console.log(text);
}
//I dont want the span tag or em tag to get messed up by this
<!DOCTYPE html>
<html>
<body>
<div id='parent'>
Lorem ipsum
<span id='element'>
<em id='child'>dolor sit amet</em>
</span>
</div>
<button onclick='replaceText()'>Change with nbsp</button>
</body>
</html>
我能想到的最好的方法是在元素中查找文本节点。您需要递归调用该函数,直到没有更多文本节点为止。下面是一些帮助您入门的示例代码。
function replaceText(element) {
for (let childNode of element.childNodes) {
if (childNode.nodeType === Node.TEXT_NODE) {
childNode.data = ' ' + childNode.data.trim().replace(/ /g, '\u00a0') + ' '
continue
}
// Recursively replace text for child node
replaceText(childNode)
}
}
<!DOCTYPE html>
<html>
<body>
<div id='parent'>
Lorem ipsum
<span id='element'>
<em id='child'>dolor sit amet</em>
</span>
</div>
<button onclick='replaceText(document.getElementById("parent"))'>Change with nbsp</button>
</body>
</html>