2017-04-01 86 views
0

我有一个带有多个句子的文本框,当我单击某个单词时,我需要获取该文本框中单词的位置。获取在文本框中单击词的位置(Javascript)

该代码实际上只是从textarea获取整个文本并将其写入另一个文本区域。我正在努力获得我点击的角色(或单词)的具体位置。

它应该做的是复制文本之前单击文字/字符。

\t var themaintextarea = document.getElementById('textarea'); 
 
\t themaintextarea.addEventListener('click', replace_sentence); 
 
\t function replace_sentence(e){ 
 
\t \t var themaintext = document.getElementById("textarea").innerHTML; 
 
    //alert(thereplace); 
 
    document.getElementById("curent_sentence").value = themaintext; 
 
    theselection = window.getSelection(); 
 
    var therange = theselection.getRangeAt(0); 
 
    var sometext = therange.toString().trim(); 
 
    alert(sometext); 
 
    
 
\t } \t
<textarea id="curent_sentence"></textarea> 
 

 
<div id="textarea" contenteditable>I <span>like</span> apples. I <span>like</span> apples. 
 
<br> 
 
I <span>like</span> apples.</div>

回答

1

编辑:继承人的小提琴选择的单词的单词单击前。注意:这里没有使用跨度。 https://jsfiddle.net/Lnkav5ca/5/

我想我明白你在找什么。 https://jsfiddle.net/Lnkav5ca/1/我将所有可点击的单词放在一个类中,并将事件侦听器添加到该类中。所以当单击它时被插入到文本框中。

var themaintextarea = document.getElementsByClassName('clickable'); 
for (var i = 0; i < themaintextarea.length; i++) { 
themaintextarea[i].addEventListener('click', replace_sentence); 
} 
function replace_sentence(e){ 
console.log(e); 
    var themaintext = e.target.innerHTML 
//alert(thereplace); 
document.getElementById("curent_sentence").value = themaintext; 
theselection = window.getSelection(); 
var therange = theselection.getRangeAt(0); 
var sometext = therange.toString().trim(); 
//alert(sometext); 

} 
+0

谢谢,实际上我想做所有这些而不添加任何跨度,但我想这是不可能的? – Brana

+0

总之,是否有可能获得以前的元素......就像之前的单词。我意识到解决方案是将2个单词放在一个范围内,我会同时得到这两个单词,但是可以通过其他方式来完成。 – Brana

+1

嘿,我有办法做到没有跨度。等一下。即时通讯为它做一个小提琴 – lhavCoder