1

问题

我正在尝试使用 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, '');      
  }
}
4

3 回答 3

2

它不起作用,因为.replace()它是 String 函数而不是jQuery 函数;JavaScript 中的字符串是不可变的,因此.replac()返回修改后的字符串,然后您必须将其重新分配给您的元素。

也就是说,您可以使用.text(fn)一个步骤来执行替换:

$("div#like-list-").text(function(i, val) {
    return val.replace(NAME, '');
});

顺便说一句,我也删除了.indexOf()条件,因为如果 NAME 没有出现在您的字符串中,该.replace()函数将只返回原始字符串。

于 2013-08-12T05:19:21.227 回答
1

您正在编辑字符串,然后将其丢弃。获取已编辑的 val,并使用对方法的参数化调用将其内容放回 HTML 元素text

function john(){
  var NAME = "Johnny Buffet,";
  var val = $("div#like-list-").text();
  if ( val.indexOf(NAME) !== -1 ){
      $("div#like-list-").text(val.replace(NAME, ''));
  }
}
于 2013-08-12T05:15:13.043 回答
0

replace()是 javascript 不是 jQuery 并且您需要在替换后将值重置为变量,因为 replace() 返回更新的文本;IE;

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, '');      
  }
}
于 2013-08-12T05:18:23.957 回答