Intervalo de texto em destaque usando JavaScript

Gostaria de destacar (aplicar css a) um determinado intervalo de texto, indicado por sua posição inicial e final. Isso é mais difícil do que parece, pois pode haver outras tags no texto que precisam ser ignorada

Exemplo

<div>abcd<em>efg</em>hij</div>

highlight(2, 6) precisa destacar"cdef "sem remover a tag.

á tentei usar um objeto TextRange, mas sem sucess

Desde já, obrigado

questionAnswers(4)

yourAnswerToTheQuestion