Javascript删除文字

时间:2011-09-27 00:47:40

标签: javascript dom

我试图在加载后使用javascript从html页面删除文本“嗨妈妈”。

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

我可以使用DOM,但不知道它在哪里,除了它包装在某处的标签中。

这可以用普通的旧Javascript完成吗?

3 个答案:

答案 0 :(得分:2)

这是一个非常简单的DOM漫游,你可以做。

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

DEMO: http://jsfiddle.net/UrNWb/

var text_to_remove = "Hi Mom";

function dom_walk( el ) {
    if( el.nodeType === 1 && el.childNodes.length ) {
        if( el.nodeName.toLowerCase() !== 'script' ) {
            for( var i = 0; i < el.childNodes.length; i++ ) {
                dom_walk( el.childNodes[ i ] );
            }
        }
    } else if( el.nodeType === 3 ) {
        if( el.data.indexOf( text_to_remove ) !== -1 ) {
            el.data = el.data.replace( text_to_remove, '' );
        }
    }
}

dom_walk( document.body );

答案 1 :(得分:1)

最简单的解决方案:

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');
}

你也可以做一个递归版本,但上面的内容更简单。

答案 2 :(得分:-1)

document.body.innerHTML = document.body.innerHTML.replace("Hi Mom", "")应该是一个不错的开始。