用另一个字符串替换元素文本的子字符串

时间:2013-08-12 05:13:43

标签: javascript jquery

问题

我正在尝试使用JavaScript字符串replace方法替换div中的某些文本(如果它包含某个字符串)。但是,我的代码不会替换该div中的字符串。

Javascript

function john(){
  var NAME = "Johnny Buffet,";
  var val = $("div#like-list-").text();
  if ( val.indexOf(NAME) !== -1 ){
      val.replace(NAME, '');      
  }
}

3 个答案:

答案 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, '');      
  }
}