替换HTML文档中的短语?

时间:2014-01-15 16:00:44

标签: javascript html

是否可以用另一个短语替换HTML文档中的短语?我不确定这是否可以用JavaScript,但这是一个例子:

String thePhrase = "this is the phrase to replace";
String toReplace = "this is the phrase that replaces thePhrase";
replace(thePhrase, toReplace);

然后,这样的内容将搜索HTML文档,并用toReplace替换thePhrase。

感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是递归遍历页面上的每个节点,从document.body开始,每当您点击文本节点时,请替换那里的文本。

var findAndReplaceAllText = function(node, needle, replacement){
    if(node.nodeName == 'SCRIPT') return; /* don't mess with script tags */
    if(node.nodeType == 3) /* if node type is text, replace text */
        node.nodeValue = node.nodeValue.replace(needle, replacement);
    for(var i = node.childNodes.length; i--;) /* loop through all child nodes */
        findAndReplaceAllText(node.childNodes[i], needle, replacement);
};
findAndReplaceAllText(document.body, /this/g, 'anything but that');

如果使用innerHTML或jQuery的.html()方法直接修改html,则它很有可能破坏引用这些元素的页面上的其他脚本,例如事件处理程序。所以,这是一种更好的方式。

无论如何,如果您需要这样做,那么您很可能以不正当的方式处理问题,并且应该尝试找到更好的方法来实现目标。

答案 1 :(得分:-3)

这里有一个如何使用p标签和jQuery来做到这一点的例子。希望它有所帮助

var thePhrase = "this is the phrase to replace";
var toReplace = "this is the phrase that replaces thePhrase";
$("p").each(function(){
   var $this = $(this);
    if( $this.html() == thePhrase) {
        $this.html( toReplace );
    }
});

在此处查看演示http://jsfiddle.net/sousatg/w3jCj/