0

制御できない Web ページを操作する Chrome 拡張機能を開発しているため、既存の css クラスと html コードを編集できません。次の例に基づいて、段落内の 2 つの単語の間にテキストを挿入しようとしています。

<p class="abc">
<b>Title:</b>The Second Title
<br>
<b>Author:</b>Mary White
<br>
<b>Date:</b>2004
</p>
<p class="abc">
<b>Title:</b>The First Title
<br>
<b>Author:</b>John Smith
<br>
<b>Date:</b>2003
</p>

次のような名前のリストがあります。

メアリー・ホワイト -> メアリー・B・ホワイト

ジョン・スミス -> ジョン・L・スミス

氏名をフルネームに置き換える必要があります。例: John Smith -> John L. Smith

私は次のことを試しました:

$(".abc:contains('Mary White')").text(function () {
  return $(this).text().replace("Mary White", "Mary B. White");
});

<b>ただし、これによりおよび<br>html タグが削除されます。

私もこれを試しました:

$(".htp:contains('John Smith')").replaceWith("John L. Smith");

しかし、それは p 全体を置き換え、それを完全な名前に置き換えます。中間のイニシャルを含む名前の段落を表示するにはどうすればよいですか?

4

2 に答える 2

3

text()はタグを削除し、テキストを提供するだけだからです。

.html()を使用しますが、名前にhtmlマークアップが含まれていると、コードは失敗します。

于 2012-10-17T23:20:16.967 に答える
1

これはあなたが望むものかもしれません:

$(function() {
    $(".abc").each(function(idx, elm) {
        elm.innerHTML = elm.innerHTML.replace("Mary White", "Mary B. White");
    });
});​

jsfiddleリンク

于 2012-10-17T23:38:25.990 に答える