JSFiddle - React, Tailwind, and code Playground

HTML

<ul><li><a href="http://toro.2ch.net/test/read.cgi/hp/1386098775/883n-">+ JavaScript の質問用スレッド vol.113 +</a></li></ul>

<p>It is a test</p>
<p>It is a test2</p>
<p>It is a test3</p>
<p>It is a test4</p>
<p>It is a test5</p>
<p>It is a test6</p>
<p>It is a test7</p>
<p>It is a test8</p>

CSS

.high-light { color: black; background-color: yellow; font-weight: bold; }

JavaScript

function setWordHighlight (word) {
  var doc = document,
      df = doc.createDocumentFragment(),
      span = doc.createElement('span'),
      texts = doc.evaluate('descendant::text()[normalize-space(.)]', doc.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  
  span.className = 'high-light';
  span.appendChild(doc.createTextNode(word));
  
  for (var i = 0, l = texts.snapshotLength, stringsLength, textNode; i < l; ++i) {
    textNode = texts.snapshotItem(i);
    strings = textNode.data.split(word);
    stringsLength = strings.length;

    if (stringsLength > 1) {
      df.appendChild(doc.createTextNode(strings[0]));

      for (var j = 1; j < stringsLength; ++j) {
        df.appendChild(span.cloneNode(true));
        df.appendChild(doc.createTextNode(strings[j]));
      }
      
      textNode.parentNode.replaceChild(df, textNode);
    }
  }
}

setWordHighlight('test');