我在使用javascript时面临一些问题。场景就像html对象有一个父元素段和4个子元素跨度。当我们选择文本时,我们获得了关于span元素的文本位置,但我想获得文本选择与父母相关的文本,那么请你指导我怎么做? 我使用此代码,每次都为所选容器提供位置,如
<p>I'm using this code that each time<span>give position with respect to selected container like</span></html>
我想获得文字位置&#34;对于&#34;关于p标签的高级代码,而不是对span标记的评价。
var sel = window.getSelection();
var selRange = sel.getRangeAt(0);
var start = selRange.startContainer;
var startElemPath = pathOfElement(start);
var startoff = selRange.parentNode.startOffset;
alert("startoff>>"+startoff);
var end = selRange.endContainer;
var endElemPath = pathOfElement(end);
var endoff = selRange.endOffset;
答案 0 :(得分:1)
您可以使用此过程开始设置并结束所选文本的设置。
function getCaretCharacterOffsetWithin(objectId, win)
{
var startOffSet = 0;
var endOffset = 0;
var element = window.frames[0].document.getElementById(objectId);
var parentInnerHTML = element.innerHTML.toString();
var parentNodeArr = parentInnerHTML.split('');
if(parentInnerHTML != "null"){
var sel;
if (typeof win.getSelection != "undefined")
{
var rangeIndex = 0;
var parentIndex = 0;
var max = parentInnerHTML.length - 1;
var range = win.getSelection().toString();
var rangeNodeArr = range.split('');
var rangeLen = rangeNodeArr.length - 1;
for (parentIndex=0; parentIndex <= max; parentIndex++)
{
if(parentNodeArr[parentIndex] === rangeNodeArr[rangeIndex]){
if(rangeIndex === rangeLen){
break;
}
rangeIndex++;
}else{
rangeIndex = 0;
}
}
endOffset = parentIndex + 1;
startOffSet = parentIndex - rangeIndex;
}
console.log("startOffSet: " + startOffSet + " endOffset: " + endOffset);
return { startOffSet: startOffSet, endOffSet: endOffset };
}else{
console.log("Parent is null");
}
}
答案 1 :(得分:0)
尝试将Range
的开始节点设置为p
startNode = document.getElementsByTagName("p")[0];
selRange.setStart(startNode,0);