使用querySelector

时间:2016-04-26 03:06:46

标签: javascript

我正在尝试使用 window.getSelection.getRangeAt(0)获取所选文本 这是我的代码:

<!DOCTYPE html>
<html>
    <head>
        <script>
          function Selected(){
            var range = window.getSelection().getRangeAt(0);
              alert(range);
            content = range.cloneContents();
            var select = content.querySelectorAll('span');
            alert(select.length);
          }
          </script>
    </head>
    <body >
        <span style="font-size:45px"  onmouseup="Selected()" id="idNo1">This is some text</span>
    </body>
</html>

警告(select.length); 总是0可以有人帮我解决这个问题。谢谢。但范围包含所选文本。

2 个答案:

答案 0 :(得分:1)

你不能这样做才能获得所选的字符串长度吗? alert(range)正在执行range.toString()

<!DOCTYPE html>
<html>
    <head>
        <script>
          function Selected(){
            var range = window.getSelection().getRangeAt(0);
              // to get the text ( it does range.toString() )
              alert(range);
              // to get the text length
              alert(range.toString().length);
              // to get the id of the startNode
              alert(range.startContainer.parentNode.id);
          }
          </script>
    </head>
    <body >
        <span style="font-size:45px"  onmouseup="Selected()" id="idNo1">This is some text</span>
    </body>
</html>

答案 1 :(得分:0)

答案和一些有用的相关信息:

选定的文本

window.getSelection().toString();//pa'rtially selected tex't.
window.getSelection().toString().length;//20, length of the selected text.

锚节点中的文本(其中文本的初始拖动是开始的,可以在左侧的右侧:< / p>

window.getSelection().anchorNode;//Node text, NOT selection text.
window.getSelection().anchorNode.length;//Length of node's text, not selection.

焦点节点(最初拖动文本为 的地方)中的文本可以位于左侧的右侧:< / p>

window.getSelection().focusNode;//Node text, NOT selection text.
window.getSelection().focusNode.length;//Length of node's text, not selection.

所选文本的共同祖先(实际上是parentNode

window.getSelection().getRangeAt(0).commonAncestorContainer

删除所选文本:

window.getSelection().deleteFromDocument();