Конкретно я хочу каретку вернуть на то место, где она печатается.
Ну и заодно разбираюсь с Range. Я так понял в setStart и setEnd нужно передать еще не существующий элемент, если планируется его создать.
Ну и вернуть как-то не выходит ее на место. Пробую так
var txt = window.getSelection().anchorOffset;
var rng = document.createRange();
rng.setStart(document.getElementsByClassName("my_class")[8].firstChild,txt );
rng.setEnd(document.getElementsByClassName("my_class")[8].firstChild,txt );
var spn = document.createElement("span");
rng.surroundContents(spn);