Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.getSelection().getRange(0)在文本被<;包装时不起作用;马克>;_Javascript_Html_Getselection - Fatal编程技术网

Javascript window.getSelection().getRange(0)在文本被<;包装时不起作用;马克>;

Javascript window.getSelection().getRange(0)在文本被<;包装时不起作用;马克>;,javascript,html,getselection,Javascript,Html,Getselection,我正在尝试使用window.getSelection().getRangeAt(0)获取句子中所选单词的索引。它可以在没有任何和的文本中正常工作。但是当一个句子中有这样的标签时,这个函数似乎会把句子分成几段 例如,HTML中的一句话看起来像我的车坏了。我该怎么办? 当我选择出现故障之前的文本时,它工作正常。但是,当我选择后面的文本时,例如,eWhat,它将在2处给出startOffset,而不是22 有可能得到整个句子的索引吗 受凯伊多回答的启发,以下方法可行。 虽然突出显示的文本不匹配,但我不

我正在尝试使用
window.getSelection().getRangeAt(0)
获取句子中所选单词的索引。它可以在没有任何
的文本中正常工作。但是当一个句子中有这样的标签时,这个函数似乎会把句子分成几段

例如,HTML中的一句话看起来像我的车坏了。我该怎么办?

当我选择出现故障之前的文本时,它工作正常。但是,当我选择后面的文本时,例如,e
What
,它将在
2
处给出
startOffset
,而不是
22

有可能得到整个句子的索引吗

受凯伊多回答的启发,以下方法可行。 虽然突出显示的文本不匹配,但我不需要突出显示的文本

请随时添加有关解决方案的评论

运行示例

$(“#选定的_文本”)。单击(函数(){
var text=“我的车坏了。我该怎么办?”;
var range=window.getSelection().getRangeAt(0);
var start=范围.STARTOFSET;
var end=range.endOffset;
var-extra=0;
var selected_string=range.toString();
var t=$('span').contents();
对于(变量i=0;i

我的车坏了。我该怎么办?
显示所选文本

Range.startOffset只读属性返回一个数字,表示范围在startContainer中的起始位置

同样,它返回endContainer中的位置

当您在页面中选择单词What时,
startContainer
是在您的
之后开始的文本节点。因此,您得到的标记是相对于此TextNode的

如果要获取所选文本,只需调用该方法即可

$(“#选定的_文本”)。单击(函数(){
var sel=window.getSelection();
var范围=选择范围(0);
var start=范围.STARTOFSET;
var end=range.endOffset;
console.log(“启动索引:+start”);
console.log(“结束索引:+end”);
log('startContainer',range.startContainer.nodeName,range.startContainer.textContent);
log('endContainer',range.endContainer.nodeName,range.endContainer.textContent);
log('toString:',sel.toString());
});

我的车坏了。我该怎么办?

单独显示所选文本:请使用演示问题的文本更新您的问题,最好是使用堆栈片段运行的文本(使用
[]
工具栏按钮;)。谢谢您的回答。所以,没有可能的方法来获取整个句子的索引?@anndy抱歉,我错过了你真正想要的。现在也为此添加了正确的解决方案。感谢您这么做。在上述方面,你的方法比我的好。从你身上学到了很多!