【发布时间】:2019-10-27 16:01:49
【问题描述】:
我正在尝试将样式应用于用户选择的文本(鼠标拖动),我需要为其获取所选文本的开始和结束索引。
我尝试过使用“indexOf(...)”方法。但它返回所选子字符串的第一次出现。我想要子字符串相对于原始字符串的实际位置。例如..,如果我在位置 3 [YOLO Cobe] 选择字母“O”,我希望索引为 3,但 indexOf() 方法返回 1,这是第一次出现 ' [YOLO Cobe] 中的 O'。
是否有任何其他方法可以获取所选文本的实际开始和结束索引而不是第一次出现?
function getSelectionText()
{
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.getElementById('ip').addEventListener('mouseup',function(e)
{
var txt=this.innerText;
console.log(txt);
var selectedText = getSelectionText();
console.log(selectedText);
var start = txt.indexOf(selectedText);
var end = start + selectedText.length;
if (start >= 0 && end >= 0){
console.log("start: " + start);
console.log("end: " + end);
}
});
<div id="ip">YOLO Cobe</div>
【问题讨论】:
标签: javascript dom substring indexof getselection