2012-10-21 58 views
1

對不起,我的英語=) 我需要替換頁面上的一些元素。這裏是我的代碼:如何在循環中替換文本中的所有文本?

var text1 = $('body').html().replace(/text1/, 'text11'); 
var text2 = $('body').html().replace(/text2/, 'text22'); 
var text3 = $('body').html().replace(/text3/, 'text33'); 
array = [text1, text2, text3]; 
     for (var i = 0; i < array.length; i++) { 
     $('body').html(array[i]) 
     }; 

但僅更換第一和第三,如果刪除第三個元素陣列,第一和第二改變。請告訴我該怎麼做。謝謝!

回答

2
var items = [ 
    { find: /text1/, replace: 'text11' }, 
    { find: /text2/, replace: 'text22' }, 
    { find: /text3/, replace: 'text33' } 
]; 
var text = $('body').html(); 

for (var i = 0; i < items.length; i++) 
{ 
    var item = items[i]; 
    text = text.replace(item.find, item.replace); 
} 

$('body').html(text); 
+0

FWIW,RegEx中沒有必要。 – VisioN

2

這是因爲當評估變量時,原始正文html保持不變。您將需要鏈中的內容替換或使用以前的變量另一個替代對象:

var text1 = $('body').html().replace(/text1/, 'text11'); 
var text2 = text1.replace(/text2/, 'text22'); 
var text3 = text2.replace(/text3/, 'text33'); 

然後你不需要任何迭代..

$('body').html(text3); 
+0

鏈接通常是指'輸入。替換(...)。替換(...)。替換(...)...' –

+0

@JanDvorak。重新閱讀帖子。 「鏈替換**或使用以前的變量**」 –

+0

@JanDvorak是正確的,我仍然在編輯答案。 –