关于javascript:使用JS查找并替换文档中的特定文本字符

Find and replace specific text characters across a document with JS

我想知道是否有一种轻量级的方法可以使用javascript或jquery在文档中嗅出一个特定的文本字符,比如说欧元,并找到这个字符的所有实例。然后!写一个功能,用一个美元来替换这个的所有实例。

我为初学者找到了这个片段:

1
2
3
var str = 'test: '';

str = str.replace(/'/g,"'");

本质上,我想要一个单页文档的解决方案。获取x的所有实例并使其成为xy。仅文本字符。


$代替@怎么样?

1
2
3
$("body").children().each(function () {
    $(this).html( $(this).html().replace(/@/g,"$") );
});

http://jsfiddle.net/maximua/jp96c/1/


我自己的建议如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function nativeSelector() {
    var elements = document.querySelectorAll("body, body *");
    var results = [];
    var child;
    for(var i = 0; i < elements.length; i++) {
        child = elements[i].childNodes[0];
        if(elements[i].hasChildNodes() && child.nodeType == 3) {
            results.push(child);
        }
    }
    return results;
}

var textnodes = nativeSelector(),
    _nv;
for (var i = 0, len = textnodes.length; i<len; i++){
    _nv = textnodes[i].nodeValue;
    textnodes[i].nodeValue = _nv.replace(/£/g,'€');
}

JS小提琴演示。

nativeSelector()函数来自这个问题的答案(由anurag发布):getElementsByTagname(),相当于textNodes。


ECMASCRIPT 2015+Approach当完成这项任务时

这似乎是一个简单的任务,但你必须照顾好一些事情:

  • 简单地替换整个HTML杀死所有DOM功能,就像事件列表
  • 替换HTML也可以替换