2013-07-30 105 views
1

我試圖找到一個字符串中的字符串的每次出現,並與的replaceAll不會改變任何東西

<span class="blue_color_text">matched_string</span> 

取代它這是我使用的(什麼發現它在這裏的一個題):

String.prototype.replaceAll = function(search, replacement) { 
var target = this; 
return target.replace(new RegExp(search, 'g'), replacement); 
}; 

下面是實際的FPGA實現:

function showResult(str) 
{ 
if (str.length == 0) 
{ 
return; 
} 

if (window.XMLHttpRequest) 
{ 
xmlhttp = new XMLHttpRequest(); 
} 

xmlhttp.onreadystatechange = function() { 

var e = document.getElementById("res_ls"); 

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
{ 
xmlhttp.responseText.replaceAll(search_string.value, "<span class=\"green\">"+search_string.value+"</span>"); 
e.innerHTML = xmlhttp.responseText; 
e.removeAttribute("class"); 
} 
} 

xmlhttp.open("GET","ajax.php?s="+str, true); 
xmlhttp.send(); 
} 

String.prototype.replaceAll = function(search, replacement) { 
var target = this; 
return target.replace(new RegExp(search, 'g'), replacement); 
}; 

沒有什麼實際變化。任何想法爲什麼?

+1

'replaceAll'返回一個結果,你必須從某個地方給它分配。 – Barmar

回答

4

.replaceAll()返回修改字符串的新實例,它不會更改現有字符串引用。所以,如果你想指的是修改後的字符串,那麼你需要存儲由.replaceAll()

返回你需要在JavaScript中使用

e.innerHTML = xmlhttp.responseText.replaceAll(search_string.value, "<span class=\"green\">"+search_string.value+"</span>"); 
+0

編碼發燒是永久關閉表:)感謝和抱歉的菜鳥問題。儘管如此,我真的生病了,p –

0

字符串是不可變的價值,所以replaceAll不改變字符串本身,但返回而不是一個新的字符串:

String.prototype.replaceAll = function(search, replacement) { 
var target = this; 
return target.replace(new RegExp(search, 'g'), replacement); // <--- HERE 
}; 

您需要的replaceAll的返回值分配給原始字符串:

xmlhttp.responseText = xmlhttp.responseText.replaceAll(search_string.value, "<span class=\"green\">"+search_string.value+"</span>"); 
0

嘗試使用J-查詢:

$(' 
//Code to find strings 
').replaceWith('<span class="blue_color_text">matched_string</span>');