通过记录onselect并存储每次的开始和结束,我能够将突出显示的文本从文本区域中取出。然后,当我单击一个按钮时,我自己构建子字符串。难道没有一种简单的方法来查询选择吗?
我有点期待HTML5DOM中会有方法来处理所有这些事情,比如:
文本区域。getSelectedStart()
textarea.getSelectedEnd();
textArea.setSelected(开始,结束);
另外,有没有一种方法可以通过编程取消选择文本区域中的文本?
我正在根据下面的第一个解决方案输入代码。这类工作,但有一个奇怪的问题:

<script language=javascript>
function replaceCLOZE(code, questionType) {
  var v = code.value;
  var s = code.selectionStart;
  var e = code.selectionEnd;
  var t = v.substr(s, e-s);
  var rep = "{:" + questionType + ":="+t+"}";
  code.value = v.substr(0,s) + rep + v.substr(e,v.length-e+1);
}

function shortAnswer(code) {
  replaceCLOZE(code, "SA");
}
function shortAnswerCaseSensitive(code) {
  replaceCLOZE(code, "SAC");
}
function multipleChoice(code) {
  replaceCLOZE(code, "MC");
}

文本区域实际上有属性code.selectionStart和code.selectionEnd。但上面的代码现在可以工作了,它将屏幕上突出显示的文本设置为文本区域中的第一个单词。请注意,selectionStart仍然正确,但是Firefox中突出显示的内容是错误的。
在铬合金中,效果很好。也许这只是firefox中的一个bug,或者需要做些别的事情来正确地更新文本区域?

最佳答案

下面是获取html文本区域的选定文本的简单方法。仍然不清楚您想要什么,因为下面的方法只会给您在警报中选择的文本。

<html><head>
<script>
function alertme(){
var textarea = document.getElementById("textArea");
var selection = (textarea.value).substring(textarea.selectionStart,textarea.selectionEnd);
alert (selection);
}

</script>

</head>
<body>
<p><textarea class="noscrollbars" id="textArea"></textarea></p>
<button onclick="alertme()">Click me</button>
</body></html>

当您选择文本时,该按钮将提醒您所选择的内容。selectionStart提供起点,selectionEnd提供终点,而substring需要三个参数string、start point和end point。

09-11 01:15
查看更多