「CSS 特定文字に色つけ」
文書内の特定の文字の色を変えるスクリプトを考える
http://oshiete.goo.ne.jp/qa/7039678.html
自分なりの解答
<!DOCTYPE html> <title></title> <style> em.language {background:#4f0;} </style> <body> <ol id="hoge"> <li>Javascript は、ブラウザ内で動く言語だ。 <li>きっとこれから数年、もてはやされる言語かもしれない </ol> <script> // テキストノードだけを集める function getTextNode (node) { return (3 === node.nodeType) ? [node] : (node.hasChildNodes ()) ? Array.prototype.concat.apply ([], Array.prototype.map.call (node.childNodes, arguments.callee)) : []; } /* * nodo に、this.text と同じ文字列が含まれていれば、this.referenceTag を複写して * ノードを挿入する */ function wardWrap (node) { var t, i; var len = this.text.length; while (-1 < (i = node.data.lastIndexOf (this.text))) { node.parentNode.insertBefore (this.referenceTag.cloneNode (true), node.splitText (i + len)); node.data = node.data.substring (0, i); } } /* * 指定要素以下のテキストを集め、対象となる文字を指定ノードで置き換える */ function textMaker (target, referenceTag, matchStr) { getTextNode (target).forEach (wardWrap, {'referenceTag': referenceTag, 'text': matchStr || referenceTag.textContent}); } var str = '言語'; var em = document.createElement ('em'); em.appendChild (document.createTextNode (str)); em.className = 'language'; textMaker (document.getElementById ('hoge'), em); </script>