사용자가 텍스트를 강조 표시하고 해당 텍스트를 반환 할 수있는 기능을 포함하려고합니다. #textcontainer div 내에 해당 텍스트의 위치를 반환하고 싶습니다.자바 스크립트에서 문자열의 위치를 반환하는 방법은 무엇입니까?
내 문제 : 사용자가 아래 텍스트에서 두 번째 'and'를 강조 표시하면 position은 두 번째 대신 div의 첫 번째 'and'indexOf와 같습니다. 위치를 두 번째 '및'(강조 표시된 위치)의 위치로 되돌리려면 어떻게 변경합니까?
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var start = range.startOffset, end = range.endOffset;
편집 : IE가 가지고있는 주 window.getSelection()
차례로 당신과 같이 사용할 수있는 getRangeAt
방법을 가지고 Selection
객체를 반환 이후
<div id = 'textcontainer'>
and second third and
</div>
// beginning of highlight js
$('#highlight').click(function (e) {
e.preventDefault();
// get highlighted text
var selection = window.getSelection();
var txt = selection.toString();
console.log(txt);
fulltext = $("#textcontainer").text();
console.log(fulltext);
position = fulltext.indexOf(txt);
console.log(position);
})
// end of highlight js
[Selection # getRangeAt] (https://developer.mozilla.org/en-US/docs/DOM/Selection/getRangeAt) 및 [Range] (https : // developers. mozilla.org/en-US/docs/DOM/range)? –
은 단어를 배열에 넣고 배열에서 두 번째 항목을 검색 할 수 있습니다. 아마도 첫 번째 항목의 색인을 얻은 다음 해당 단어의 끝에서 문자열을 분할하여 (즉, index + word.length) 문자열의 나머지 부분을 검색하는 것이 좋습니다. 정규식 일치를 사용할 수도 있습니다. – sgroves
@JeremyRoman IE 지원은 어떻게됩니까? 아래의 대답은 getRange가 IE에서 작동하지 않는다는 것을 언급합니다. 브라우저 간 사용을 위해 사용할 수있는 jQuery의 내용은 무엇입니까? – sharataka