删除文本的Javascript

删除文本的Javascript,javascript,dom,Javascript,Dom,我试图在加载后使用javascript从html页面中删除文本“Hi Mom” 我不能使用像jQuery这样的框架 我可以使用DOM,但不知道它在哪里,除非它被包装在某个标记中 这可以用普通的旧Javascript实现吗?document.body.innerHTML=document.body.innerHTML.replace(“嗨,妈妈”)应该是一个不错的开始。这里是一个非常简单的DOM漫游 如果您认为在同一个文本节点中可能会出现多次,则可能会有改进,但听起来情况并非如此 演示: var

我试图在加载后使用javascript从html页面中删除文本“Hi Mom”

我不能使用像jQuery这样的框架

我可以使用DOM,但不知道它在哪里,除非它被包装在某个标记中


这可以用普通的旧Javascript实现吗?

document.body.innerHTML=document.body.innerHTML.replace(“嗨,妈妈”)应该是一个不错的开始。

这里是一个非常简单的DOM漫游

如果您认为在同一个文本节点中可能会出现多次,则可能会有改进,但听起来情况并非如此

演示:

var text_to_remove=“Hi Mom”;
功能dom_walk(el){
if(el.nodeType==1&&el.childNodes.length){
if(el.nodeName.toLowerCase()!='script'){
对于(变量i=0;i
最简单的解决方案:

function removeText(s) {
  var el, els = document.getElementsByTagName('*');
  var node, nodes;

  for (var i=0, iLen=els.length; i<iLen; i++) {
    el = els[i];

    if (el.tagName.toLowerCase() != 'script') {
      nodes = el.childNodes;
    } else {
      nodes = [];
    }

    for (var j=0, jLen=nodes.length; j<jLen; j++) {
      node = nodes[j];

      if (node.nodeType == 3) {
        node.data = node.data.replace(s, '');
      }
    }
  }
}

window.onload = function() {
  removeText('hi mom');
}
函数removeText(s){
var el,els=document.getElementsByTagName('*');
var节点,节点;

对于(var i=0,iLen=els.length;iDestroying和恢复整个DOM结构不是一个好的做法。您只是销毁了文档中所有未内联的侦听器,并且可能销毁了很多属性和默认属性。很酷,但是indexOf测试似乎是多余的,为什么不进行替换呢(并保存一行代码)。也不理解el.childNodes.length的测试,如果它为零,则无论如何都会跳过for循环。@RobG:我相信
indexOf
.replace()更快
+重新分配。对于
.length
,我只是尽可能避免
if
中的额外工作,比如
toLowerCase()
,但你是对的,它可以被消除……但是我想在脚本的情况下,
.length
不太可能是
0
,所以没有什么意义。EDIT:事实上,我刚刚做了一个测试,至少在Chrome中,我得到了
子节点的
长度。如果这是一致的,那么我可以完全摆脱
“脚本”
测试。
function removeText(s) {
  var el, els = document.getElementsByTagName('*');
  var node, nodes;

  for (var i=0, iLen=els.length; i<iLen; i++) {
    el = els[i];

    if (el.tagName.toLowerCase() != 'script') {
      nodes = el.childNodes;
    } else {
      nodes = [];
    }

    for (var j=0, jLen=nodes.length; j<jLen; j++) {
      node = nodes[j];

      if (node.nodeType == 3) {
        node.data = node.data.replace(s, '');
      }
    }
  }
}

window.onload = function() {
  removeText('hi mom');
}