Javascript Can';t范围为set.Start set.setEnd的环绕内容

Javascript Can';t范围为set.Start set.setEnd的环绕内容,javascript,range,Javascript,Range,我需要用跨距来包围多个单词,我知道每个单词的startIndex和endIndex(我确定没有单词会在多个标记中跨距,并且所有单词都在同一个元素中) 我甚至不能选择第一个单词,我得到“IndexSizeError:Index或size为负或大于允许的数量”和类似的rangy错误()我做错了什么 var range = document.createRange(); startNode = document.getElementById("texttocheck"); range.setStar

我需要用跨距来包围多个单词,我知道每个单词的startIndex和endIndex(我确定没有单词会在多个标记中跨距,并且所有单词都在同一个元素中) 我甚至不能选择第一个单词,我得到“IndexSizeError:Index或size为负或大于允许的数量”和类似的rangy错误()我做错了什么

var range = document.createRange();
startNode = document.getElementById("texttocheck");

range.setStart(startNode, 0);
range.setEnd(startNode, 4);

var newNode = document.createElement("span");
range.surroundContents(newNode);

这是小提琴:

我发现了,我错过了startnode.firstChild

var range = document.createRange();
startNode = document.getElementById("texttocheck");

range.setStart(startNode.firstChild, 0);
range.setEnd(startNode.firstChild, 4);

var newNode = document.createElement("span");
range.surroundContents(newNode);

您是只选择第一个单词还是全部单词?您必须使用createRange()还是可以使用其他方法?其中一些方法是错误的,这将是拼写检查