Javascript 想要获取文本(内容)的开始和结束索引

Javascript 想要获取文本(内容)的开始和结束索引,javascript,Javascript,我想使用selectNodeContents()或document.createRange()从整个内容中获取所选文本(内容)的开始索引和结束索引 我试过了 <div id="parent"> Hello everyone! <p id="demo_text">This is my home page</p> </div> var node = document.getElementById('demo_

我想使用selectNodeContents()或document.createRange()从整个内容中获取所选文本(内容)的开始索引和结束索引

我试过了

<div id="parent">
 Hello everyone! <p id="demo_text">This is my home page</p>
</div>

var node = document.getElementById('demo_text');
var range = document.createRange();    
range.selectNodeContents(node);
像这样的

函数getSartEnd(elementID)
{
让el=document.getElementById(elementID)
,elTxt=el.textContent.replace(/[\n\r]+/g',).trim()
,pTxt=el.parentNode.textContent.replace(/[\n\r]+/g',).trim()
,start=pTxt.indexOf(el.textContent)
,end=start+eltext.length-1
;
返回{开始,结束}
}
console.log(getSartEnd('demo_text'))

大家好

这是我的主页


如果您实际上只是在查找索引,可以结合使用在父元素
innerText
中查找子元素的
innerText
,这将返回起始索引。然后,可以通过添加子字符串的长度来计算结束索引

const node=document.getElementById('demo_text');
const parent=document.getElementById('parent');
const startIndex=parent.innerText.indexOf(node.innerText);
const endIndex=startIndex+node.innerText.length-1;
log('startIndex:',startIndex');
log('endIndex:',endIndex);
log(parent.innerText[startIndex]);
log(parent.innerText[endIndex])

大家好

这是我的主页


为什么不在字符串上使用split,然后获取第一个和最后一个的索引?或者您正在尝试获取第一个单词的第一个字母的实际索引位置,
This
和最后一个单词的第一个字母
page
引用整个父字符串?不清楚您在寻找什么。是否要选择文本?或者你真的只是想要上面提到的索引?
startIndex = 16 // starting index of "This" from "Hello everyone! This is my home page"
endIndex = 35 // end index of "page" from "Hello everyone! This is my home page"