要在DOM中替换的Javascript

要在DOM中替换的Javascript,javascript,Javascript,我有以下javascript代码: var contents; window.onload = function(){ contents = document.getElementsByTagName('body'); console.log(contents); }; 它获取身体的内容。现在我想用*替换*。我应该如何处理这个问题 我想使用Javascript而不是jQuery。为了不替换整个HTML(态度非常糟糕),我们可以对元素进行快速操作: var specialTags

我有以下javascript代码:

 var contents; 
 window.onload = function(){
 contents = document.getElementsByTagName('body');
 console.log(contents);
  };
它获取身体的内容。现在我想用
*
替换
*
。我应该如何处理这个问题


我想使用Javascript而不是jQuery。

为了不替换整个HTML(态度非常糟糕),我们可以对元素进行快速操作:

var specialTags = ["head", "script", "style"].join("|"),
    re = new RegExp("^(?:" + specialTags + ")$", "i");

for (var els = document.getElementsByTagName("*"), i = els.length; i--;) {
    var el = els[i];

    if (re.test(el.tagName))
        continue;

    for (var j = 0, childs = el.childNodes, lj = childs.length; j < lj; j++) {
        var child = childs[j];
        if (child.nodeType === 3 && child.nodeValue.indexOf("*") > -1) {
            var segments = child.nodeValue.split("*");
            for (var k = 0, lk = segments.length; k < lk; k++) {
                el.insertBefore(document.createTextNode(segments[k]), child);
                if (k < lk - 1) {
                    var span = document.createElement("span");
                    span.className = "red";
                    span.appendChild(document.createTextNode("*"));
                    el.insertBefore(span, child);
                }
            }
            el.removeChild(child);
        }
    }
}
var specialTags=[“head”、“script”、“style”]。加入(“|”),
re=新的RegExp(“^(?“+specialTags+”)$”,“i”);
对于(var els=document.getElementsByTagName(“*”),i=els.length;i--;){
var el=els[i];
if(重新测试(el标记名))
继续;
对于(var j=0,childs=el.childNodes,lj=childs.length;j-1){
var segments=child.nodeValue.split(“*”);
对于(var k=0,lk=segments.length;k

演示:

正则表达式isuppose@lavrik糟糕的想法。为什么@BenjaminGruenbaum?@lavrik会很慢而且很容易出错(*在标记属性中)。它正在用正则表达式解析HTML。快告诉我。虽然我的解决方案使用了
TreeWalker
,但这已经足够接近了。@BenjaminGruenbaum
TreeWalker
很容易使用,不过这一款应该得到更多浏览器的支持。
TreeWalker
自IE9以来,它在每一款浏览器上都能工作,甚至微软下个月也会放弃对IE8的支持:)@BenjaminGruenbaum感谢上帝<代码>:)
请你再解释一下特殊的标签,然后仔细考虑一下你的建议……谢谢