HTML段落内の任意のテキストの周りにスパンをラップする簡単な方法はありますか?たとえば、次の元のhtmlがあるとします。
<p>Here is a dandy block of text to color up</p>
<p> WHOAH another paragraph</p>
ユーザー入力に基づいて、テキストの任意の部分を折り返したいのですが。したがって、1セットの入力がこれを次のように変換する可能性があります
<p>Here is a <span style="background:yellow">dandy block</span> of text to color up</p>
<p> WHOAH <span style="background:green">another paragraph</span></p>
別の入力セットが作成される可能性がありますが
<p>Here is a<span style="background:yellow">a dandy block</span> of text to color up</p>
<p> WHOAH <span style="background:green">another</span> paragraph</p>
この問題はこれとこれに関連していますが、私の目標との主な違いは、ハイライトを一時的な選択だけでなく永続的にしたいということです。また、これをテキスト領域ではなくp要素内で機能させたいということです。
可能であれば、jQueryを使用したように見えると思います
var innerText = $('p')[p_index].slice(char_start, char_end).text();
$('p')[p_index].slice(char_start, char_end).html(
"<span style=\"background:yellow\">"+
innerText +
"</span>");
これにより、(理論的には)p_index
段落が選択され、指定されたインデックス間の範囲が取得され、元のテキストがネストされた新しく作成されたスパンに置き換えられます。jQueryオブジェクトの添え字は別の内部jQueryオブジェクトを返さないため、これは明らかに機能しません。けれど
$("p").slice(0, 1).html("<span style=\"background: blue\">" +
$("p").slice(0, 1).text() +
"</span>");
段落レベルでは正確に実行しますが、テキスト内レベルでは実行しません。このアプローチを使用して、私が持っている文字範囲を指定して各段落を完全に書くことで置換を行うことができますが、簡単な方法があれば、提案をいただければ幸いです。