Javascript 如何删除不在HTML元素中的字符?
我知道如何删除或操作HTML元素中的字符串,但如果它位于HTML元素之外,我将如何执行该操作。我正在尝试删除(|)字符,但不确定如何使用javascript执行此操作Javascript 如何删除不在HTML元素中的字符?,javascript,html,Javascript,Html,我知道如何删除或操作HTML元素中的字符串,但如果它位于HTML元素之外,我将如何执行该操作。我正在尝试删除(|)字符,但不确定如何使用javascript执行此操作 <html> <body> <p>Hello</p> | <p>World</p> | <p>!</p> </body> 你好 | 世界 | ! 您可以与和结合使用 只读Nod
<html>
<body>
<p>Hello</p>
|
<p>World</p>
|
<p>!</p>
</body>
你好
|
世界
|
!
您可以与和结合使用
只读Node.nodeType属性返回表示节点类型的无符号短整数
$(文档).ready(函数(){
$('div').contents().filter(函数(){
返回this.nodeType==Node.TEXT_Node&&this.textContent.trim();
}).remove();
});代码>
你好
|
世界
|
!
这里有一个普通的JavaScript递归解决方案,可以删除“普通”节点之外的所有文本。我指的是不在以下标记内的文本:
[ "a", "p", "script", "span", "b", "em", "strong", "i" ]
通常只有文本节点作为子节点
//这些元素只能有文本节点
var-okayTypes=[“a”、“p”、“script”、“span”、“b”、“em”、“strong”、“i”]
var removeAllText=函数(节点){
//如果节点类型为3(文本节点),节点名称为“#文本”
if(node.nodeName==“#text”){
node.parentNode.removeChild(节点);
}else if(node.childNodes){
对于(var i=node.childNodes.length;i--;){
//如果子元素不允许纯文本节点,则在其上递归
if(okayTypes.indexOf(字符串(node.childNodes[i].tagName).toLowerCase())=-1)
removeAllText(node.childNodes[i]);
}
}
}
removeAllText(document.body)代码>
不要拆下1
移除1
不要拆下2个
移除2
不要拆下3个
使用innerHTML
和文本替换可能是最简单的方法,但这非常缓慢,而且非常糟糕。
确实有一些库可以满足您的需要,但我不喜欢为这么简单的任务需要大量的库。
下面是一种纯JavaScript方式:
文本节点在添加、删除和更改包含的文本方面与元素节点类似。
您可以通过document.body.firstElementChild.nextSibling
获取第一个“|”,然后可以将其从其父级中删除或像普通一样编辑其内容:
var textNode1 = document.body.firstElementChild.nextSibling;
var textNode2 = textNode1.nextSibling.nextSibling;
// Remove the first text node
textNode1.parentNode.removeChild(textNode1);
// Replace the second by something else
textNode2.textContent = 'Derp';
[]
如果需要,还可以通过检查.nodeType
,检查节点是文本节点还是其他节点:
for(var i = 0; i < document.body.childNodes.length; i++)
{
if(document.body.childNodes[i].nodeType == 3) // "3" means text node
{
document.body.removeChild(document.body.childNodes[i]);
}
}
for(var i=0;i
.nodeType
的可能值及其含义列在,或者。在本例中,只需在正在检查的节点的上迭代,然后删除遇到的每个文本节点
var root=document.body;
[]forEach.call(root.childNodes,函数(node){
if(node.nodeType==3){
root.removeChild(节点);
}
});代码>
你好
|
世界
|
!