最近、同様の問題を実行する必要があり、次のようなものを思いつきました。
<!DOCTYPE html>
<html>
<head>
<title>HTML JS REPLACE</title>
<script type="text/javascript">
function convert(elem) {
var content = document.getElementById(elem).innerHTML; // get HTML content for the given element
var pattern = new RegExp(/hello/gi);
content = content.replace(pattern,'hi');
document.getElementById(elem).innerHTML = content; // put the replace content back
}
</script>
</head>
<body>
<div id="content">
Some text that includes both hello and hi. And a hello.
</div>
<script type="text/javascript">
window.onload = convert('content');
</script>
</body>
</html>
その結果、次のようなページが表示されます。
hi と hi の両方を含むテキスト。そしてこんにちは。
元の情報源はまだ言っていますが:
hello と hi の両方を含むテキスト。そしてこんにちは。
トリッキーな部分はほんの一部です。まず、body の下部に window.onload トリガーを含めて、JS を実行する前に DOM を完全にロードします。次に、JS から参照できる一意の ID を割り当てるトップレベルのブロック要素が必要です。第 3 に、convert 関数は正規表現を使用します。この正規表現は、文字列「hello」を「hi」に変更することで、大文字と小文字を区別しないグローバルな置換を実行します。
特定のアプリケーションでは、代わりにすべての発生をキャプチャしてループで解析する必要がある場合があります。これにより、パフォーマンスの問題が発生する場合と発生しない場合があります。気をつけて :)