2011-06-17 146 views
0

我有以下功能标签特定的字符串替换

 
function replacer(oldstring, newstring) { 
document.body.innerHTML = document.body.innerHTML.replace(oldstring, newstring); 
} 

我希望能够如果不是内部更换任何文本以下标记

 
<a id="word">some text</a> 

或< >字符之间。

请你可以告诉我,如果有老字符串在里面的时候跳过a标记或< >之间的字符。

预先感谢您!

回答

0

我认为有以下应该做的伎俩:

function replacer(oldstring, newstring) { 
    var regExp = new RegExp("(<[^<>]+>)" + oldstring + "(</[^<>]+>)", "g"); 
    document.body.innerHTML = document.body.innerHTML.replace(regExp, "$1" + newstring + "$2"); 
} 
+0

对不起,但这是行不通的! – testere 2011-06-17 09:23:24

+0

这是因为我忘了将新字符串分配给主体:) 它现在应该工作... – Ofir 2011-06-17 15:45:31

2

这是从来没有更换身体的innerHTML一个很好的方法,它导致整个页面,这可能不受欢迎的影响进行重新绘制的。

您可以搜索页面的字符串:

如果发现任何,确定,如果父元素节点范围(或者他的祖先之一,如果需要的话)是排除的范围。如果不是,请替换文字。

不幸的是上述两种方法都不适用于歌剧。