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

jQuery関数ではなく.replace()文字列関数であるため、機能しません。JavaScript の文字列は不変であるため、要素に再割り当てする必要がある変更された文字列を返します。.replac()

つまり.text(fn)、単一のステップで置換を実行するために使用できます。

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

ところで、.indexOf()条件も削除しました。名前が文字列内にない場合、.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() が更新されたテキストを返すため、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, '');      
  }
}
于 2013-08-12T05:18:23.957 に答える