В этом случае вы можете сделать это, используя методы Range
.Я предполагаю, что ваш текст все содержится в одном текстовом узле.Например:
<div id="test">The quick brown fox jumps over the lazy dog</div>
Сначала создайте диапазон:
var range = document.createRange();
var textNode = document.getElementById("test").firstChild;
range.setStart(textNode, 10);
range.setEnd(textNode, 15);
Чтобы окружить только слово "коричневый" в пределах диапазона, вы можете использовать метод диапазона surroundContents()
:
var span = document.createElement("span");
range.surroundContents(span);
Однако это не будет работать в некоторых более сложных случаях, когда выбор пересекает границы узла.Кроме того, IE <9 не поддерживает <code>Range, поэтому вам потребуется совершенно другое решение для этих браузеров.
Демонстрационная версия: http://jsfiddle.net/m3yJ5/
Раздел саморекламы
В более сложных случаях вы можете использовать мою библиотеку Rangy и ее модуль применения классов CSS , который окружает любой произвольный выбор или диапазон в <span>
с определенным классом CSS.