我正在尝试使用JavaScript字符串replace
方法替换div中的某些文本(如果它包含某个字符串)。但是,我的代码不会替换该div中的字符串。
function john(){
var NAME = "Johnny Buffet,";
var val = $("div#like-list-").text();
if ( val.indexOf(NAME) !== -1 ){
val.replace(NAME, '');
}
}
答案 0 :(得分:2)
它不起作用,因为.replace()
是一个String函数而不是一个jQuery函数; JavaScript中的字符串是不可变的,因此.replac()
返回修改后的字符串,然后您必须将其重新分配给元素。
也就是说,您可以使用.text(fn)
一步完成替换:
$("div#like-list-").text(function(i, val) {
return val.replace(NAME, '');
});
顺便说一下,我也删除了.indexOf()
条件,因为如果你的字符串中没有出现NAME,.replace()
函数将只返回原始字符串。
答案 1 :(得分:1)
您正在编辑字符串,然后将其丢弃。使用已编辑的val并使用对text
方法的参数化调用将其内容放回HTML元素中。
function john(){
var NAME = "Johnny Buffet,";
var val = $("div#like-list-").text();
if ( val.indexOf(NAME) !== -1 ){
$("div#like-list-").text(val.replace(NAME, ''));
}
}
答案 2 :(得分:0)
replace()
是javascript而不是jQuery,你需要在替换后将值重置为变量,因为replace()返回更新的文本;
即;
val = val.replace(NAME, '');
所以试试:
function john(){
var NAME = "Johnny Buffet,";
var val = $("div#like-list-").text();
if ( val.indexOf(NAME) !== -1 ){
val = val.replace(NAME, '');
}
}