2011-06-17 145 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一個很好的方法,它導致整個頁面,這可能不受歡迎的影響進行重新繪製的。

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

如果發現任何,確定,如果父元素節點範圍(或者他的祖先之一,如果需要的話)是排除的範圍。如果不是,請替換文字。

不幸的是上述兩種方法都不適用於歌劇。