相关疑难解决方法(0)

dom range.setStart/setEnd

我试图只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)

html javascript dom range

8
推荐指数
1
解决办法
7909
查看次数

未捕获的 DOMException:无法在“Range”上执行“setStart”:偏移量大于节点的长度

下面的代码经常抛出一个错误,读取

未捕获的 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)

javascript tree range nodes

7
推荐指数
1
解决办法
1959
查看次数

标签 统计

javascript ×2

range ×2

dom ×1

html ×1

nodes ×1

tree ×1