use*_*251 8 html javascript dom range
我试图只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)
Lou*_*uis 10
您需要可视化<div id="test">元素的DOM结构.它包含三个孩子:
仅包含空格的文本节点.
<p>包含具有值的文本节点的元素h.
具有值的文本节点ello.
因此,您的范围必须以<p>元素开头,并在ello文本节点中以两个l字符之间结束.因此:
var range = document.createRange();
var root_node = document.getElementById("test");
// Start at the `<p>` element.
range.setStart(root_node, 1);
// End in the `ello` text node, between the two `l`s.
range.setEnd(root_node.childNodes[2], 2);
var newNode = document.createElement("b");
range.surroundContents(newNode);
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴.