我试图只hel在这个小提琴http://jsfiddle.net/yarkpakv/中加粗文字,但它似乎没有起作用,我做错了什么?
var range = document.createRange();
var root_node = document.getElementById("test");
range.setStart(root_node,0);
range.setEnd(root_node,3);
var newNode = document.createElement("b");
range.surroundContents(newNode);Run Code Online (Sandbox Code Playgroud)
<div id="test">
<p>h</p>ello
</div>Run Code Online (Sandbox Code Playgroud)
下面的代码经常抛出一个错误,读取
未捕获的 DOMException:无法在“Range”上执行“setStart”:偏移
some integer量大于节点的长度 (some smaller integer)。
var range = document.createRange();
range.setStart(pos.node, pos.position + someNumber);
Run Code Online (Sandbox Code Playgroud)
pos 设置如下:
getTextNodeAtPositionAndReturnEndOfContextIfNeeded = function(root, index){
var lastNode = null;
var nodeCount = 0;
var treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, function next(elem) {
nodeCount++;
if(index > elem.textContent.length){
index -= elem.textContent.length;
lastNode = elem;
return NodeFilter.FILTER_REJECT;
}
return NodeFilter.FILTER_ACCEPT;
}, true); //true was added as a parameter to satisfy ie, but I haven't determined if it still works in other browsers, seems fine …Run Code Online (Sandbox Code Playgroud)