的replaceAll不会改变任何东西
问题描述:
我试图找到一个字符串中的字符串的每次出现,并与的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);
};
没有什么实际变化。任何想法为什么?
答
.replaceAll()
返回修改字符串的新实例,它不会更改现有字符串引用。所以,如果你想指的是修改后的字符串,那么你需要存储由.replaceAll()
返回你需要在JavaScript中使用
e.innerHTML = xmlhttp.responseText.replaceAll(search_string.value, "<span class=\"green\">"+search_string.value+"</span>");
+0
编码发烧是永久关闭表:)感谢和抱歉的菜鸟问题。尽管如此,我真的生病了,p –
答
字符串是不可变的价值,所以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>");
答
尝试使用J-查询:
$('
//Code to find strings
').replaceWith('<span class="blue_color_text">matched_string</span>');
'replaceAll'返回一个结果,你必须从某个地方给它分配。 – Barmar