我有以下功能
function replacer(oldstring, newstring) { document.body.innerHTML = document.body.innerHTML.replace(oldstring, newstring); }
我希望能够替换任何文本如果不在下面的标记
<a id="word">some text</a>
或之间&lt; &GT;字符。
如果当oldstring在 a 标签内或在&lt;之间时,你能告诉我是否有办法跳过&GT;字符。
提前谢谢!
答案 0 :(得分:2)
替换正文的innerHTML绝不是一个好方法,它会导致整个页面的重新渲染,这可能会产生不良影响。
您可以在页面中搜索字符串:
如果找到任何一个,请确定该范围的父元素节点(或者如果需要的话,他的祖先之一)是要排除的那个。如果没有,请替换文本。
不幸的是,上述两种方法都不适用于opera。
答案 1 :(得分:0)
我认为以下应该可以解决问题:
function replacer(oldstring, newstring) {
var regExp = new RegExp("(<[^<>]+>)" + oldstring + "(</[^<>]+>)", "g");
document.body.innerHTML = document.body.innerHTML.replace(regExp, "$1" + newstring + "$2");
}