Javascript 在多个节点上创建范围

Javascript 在多个节点上创建范围,javascript,coffeescript,range,Javascript,Coffeescript,Range,我试图使用coffeescript/javascript创建一个范围,当用户滚动某些文本时,该范围返回几句文本。我将偏移量向后移动40个位置,但是这有时意味着进入前一个节点。我如何使这一切正常发生 我拥有的(只要我不离开节点,就可以工作): 正如你所看到的,我的代码不是很好,并且做了很多假设,所以当涉及到跨越这些节点时,我会非常高兴有人能引导我朝着正确的方向前进 标记示例(非常糟糕): 标题内容 是的,随机中断 是的,再来一杯 废话废话 更多的话,到此为止。你明白了。 此问题

我试图使用coffeescript/javascript创建一个范围,当用户滚动某些文本时,该范围返回几句文本。我将偏移量向后移动40个位置,但是这有时意味着进入前一个节点。我如何使这一切正常发生

我拥有的(只要我不离开节点,就可以工作):

正如你所看到的,我的代码不是很好,并且做了很多假设,所以当涉及到跨越这些节点时,我会非常高兴有人能引导我朝着正确的方向前进

标记示例(非常糟糕):


标题内容
是的,随机中断
是的,再来一杯



废话废话

更多的话,到此为止。你明白了。

此问题是我的一位同事的后续问题。

在这一行之后:

new_start = range.startOffset- 40
检查新的_启动是否为负,如果为负,则将其设置为零。代码如下:

new_start = range.startOffset - 40;
if(new_start < 0)
    new_start = 0;
new_start=range.startOffset-40;
如果(新开始<0)
新开始=0;
这就是你目前的问题。不过你还有一个问题。您的端点也可能溢出当前文本。因此,您应该检查
endOffset

new_start = range.startOffset- 40
new_start = range.startOffset - 40;
if(new_start < 0)
    new_start = 0;