1

我正在尝试查找字符串中每个出现的字符串,并将其替换为

<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);
};

下面是实际的实现:

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);
};

实际上什么都没有改变。知道为什么吗?

4

3 回答 3

4

.replaceAll()返回修改后字符串的新实例,它不会更改现有的字符串引用。所以如果你想引用修改后的字符串,那么你需要存储返回的值.replaceAll()

你需要使用

e.innerHTML = xmlhttp.responseText.replaceAll(search_string.value, "<span class=\"green\">"+search_string.value+"</span>");
于 2013-07-30T03:22:59.827 回答
0

JavaScript 中的字符串是不可变的,因此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>");
于 2013-07-30T03:25:12.160 回答
0

尝试使用 J-Query:

$('
//Code to find strings
').replaceWith('<span class="blue_color_text">matched_string</span>');
于 2013-07-30T03:32:13.223 回答