나는 html 텍스트 영역을 가지고 있으며, 캐럿이있는 위치에 따라 단어를 텍스트에서 추출해야합니다.캐럿이있는 위치에 따라 텍스트 영역에서 전체 단어를 추출하십시오.
그래서 캐럿이 단어에 있거나 단어의 시작 부분 (또는 끝 부분)에있는 경우이를 가져와야합니다.
어떻게 할 수 있습니까? 라이브러리를 찾고 있지 않다. 평범한 자바 스크립트. 도와주세요.
나는 html 텍스트 영역을 가지고 있으며, 캐럿이있는 위치에 따라 단어를 텍스트에서 추출해야합니다.캐럿이있는 위치에 따라 텍스트 영역에서 전체 단어를 추출하십시오.
그래서 캐럿이 단어에 있거나 단어의 시작 부분 (또는 끝 부분)에있는 경우이를 가져와야합니다.
어떻게 할 수 있습니까? 라이브러리를 찾고 있지 않다. 평범한 자바 스크립트. 도와주세요.
다음은 작업을 수행 할 수있는 코드입니다. 기본적으로 캐럿 위치를 추출하십시오. 문장을 배열로 변환하십시오. 길이가 단어를 찾은 캐럿 위치보다 큰 경우 단어 길이를 함께 추가하는 루프 배열입니다.
<html>
<script>
function getCaret(node) {
if (node.selectionStart) {
return node.selectionStart;
} else if (!document.selection) {
return 0;
}
var c = "\001",
sel = document.selection.createRange(),
dul = sel.duplicate(),
len = 0;
dul.moveToElementText(node);
sel.text = c;
len = dul.text.indexOf(c);
sel.moveStart('character',-1);
sel.text = "";
return len;
}
function getWord()
{
var el = document.getElementById('myText');
var carret = getCaret(el);
var words = el.value.split(' ');
var x = 0;
for(var i = 0; i < words.length; i++)
{
debugger;
x += words[i].length + 1;
if(x > carret){ return words[i]; }
}
}
function myWord()
{
var word = getWord();
alert(word);
}
</script>
<body>
<button onclick="myWord();" >Get word</button>
<textarea id="myText">This is a hallo world sentence</textarea>
</body>
</html>
var words = el.value.split ('');하고 있습니다. 하지만 새로운 줄 (/ n) 또는/r이 될 수도 있습니다 – ghostCoder
항상 정규식 분할을 수행 할 수 있습니다. 예 : 단어 경계에서 분리하려면 다음을 사용하십시오. el.value.split (/ \ b /); 이 알고리즘을 사용하면 시력을 조정해야합니다. x + = words [i] .length; (제거 +1;). 교장이 거기에있다. 답장으로 표시하는 것을 잊지 마십시오. – MarzSocks
예/\ s + | \ n | \ r/:) – ghostCoder
"foo^bar"와 (과) 비슷한가요? –