单击段落中的单词后如何获取到目前为止的单词数?

时间:2018-11-01 03:37:40

标签: javascript jquery html

我在这里有此脚本-

//Click word, alert position
$(".content").click(function(e){
  s = window.getSelection();
  var range = s.getRangeAt(0);
  var node = s.anchorNode;
  while(range.toString().indexOf(' ') != 0) {                 
    range.setStart(node,(range.startOffset -1));
  }
  range.setStart(node, range.startOffset +1);
  do{
    range.setEnd(node,range.endOffset + 1);

  }while(range.toString().indexOf(' ') == -1 && range.toString().trim() != '');
  var str = range.toString().trim();
  alert(str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        
<p class="content">Lorem ipsum dolor sit amet,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,  At vero eos et accusam et justo duo dolores et ea rebum.  Lorem ipsum dolor sit amet,  no sea takimata sanctus est Lorem ipsum dolor sit amet.  Stet clita kasd gubergren,  no sea takimata sanctus est Lorem ipsum dolor sit amet.  no sea takimata sanctus est Lorem ipsum dolor sit amet.  no sea takimata sanctus est Lorem ipsum dolor sit amet.  sed diam voluptua.</p>

...而且我了解如何提醒被点击的单词,但是我的目标是点击一个单词,并让它提醒该单词以及它在元素中的当前位置。

例如,在本段中:

<p>Lorem ipsum dolor sit amet,sed diam nonumy eirmod tempor invidunt</p>

我单击“ sit”一词,警报将显示“ sit”一词,从头开始是4个单词,或者到目前为止是4个单词,等等。

我似乎无法确定字数。

1 个答案:

答案 0 :(得分:1)

startOffset的{​​{1}}进行更改后,然后检查元素的range的{​​{1}},以获取选择之前的所有文本。从那里,您可以检查其中slice(单词字符子字符串)的出现次数,即单词的数量:

textContent
\w+