不能在范围设置的环绕内容。启动set.setEnd

时间:2013-04-22 10:45:13

标签: javascript range

我需要用spans包围多个单词,我知道每个单词的startIndex和endIndex(我确定没有单词会跨越多个标签,所有单词都在同一个元素中) 我甚至无法选择第一个单词,我得到“IndexSizeError:索引或大小为负数或大于允许的数量”和rangy(http://jsfiddle.net/pastrocchio/hgugQ/7/)类似的错误我做错了什么?

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

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

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

这里是小提琴:http://jsfiddle.net/pastrocchio/hgugQ/3/

1 个答案:

答案 0 :(得分:8)

我想通了,我错过了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);