Спасибо за ответ, но меня в целом интересует только зачем firstChild в setStart и setEnd? Что передает первый параметр? Почему бы просто не передать document.getElementById("id"), вместо document.getElementById("id").firstChild,
в том же примере на
http://learn.javascript.ru/vydelenie...роме-ie-9