dom range.setStart / setEnd

后端 未结 2 2111
深忆病人
深忆病人 2021-02-20 17:52

I am trying to bold only the text hel in this fiddle http://jsfiddle.net/yarkpakv/ but it does not seem to be working, what am I doing wrong???

2条回答
  •  孤城傲影
    2021-02-20 18:20

    You need to visualize the DOM structure of your

    element. It contains three children:

    1. A text node that contains only white space.

    2. The

      element which contains a text node that has the value h.

    3. A text node that has the value ello.

    So your range must start with the

    element and ends in the ello text node, between the two l characters. Therefore:

    var range = document.createRange();
    var root_node = document.getElementById("test");
    
    // Start at the `

    ` 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);

    Here's a fiddle.

提交回复
热议问题