我有一个包含多个句子的文本框,当我点击一个单词时,我需要在这个文本框中找到该单词的位置。
代码实际上只是从textarea获取整个文本并将其写入另一个文本区域。我正在努力获得我点击的角色(或单词)的具体位置。
它应该做的只是在点击的单词/字符之前复制文本。
var themaintextarea = document.getElementById('textarea');
themaintextarea.addEventListener('click', replace_sentence);
function replace_sentence(e){
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);
}

<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>
&#13;
答案 0 :(得分:1)
EDITED:继续点击单词之前选择单词的小提琴。注意:此处不使用跨距。 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);
}