【问题标题】:.getSelection().getSelection()
【发布时间】:2011-09-14 12:46:45
【问题描述】:

HTML 代码--

<script language="javascript" type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

<script language="javascript" type="text/javascript" src="js/jquery.field.selection.js"></script>

    <div id="copy">Copy</div>
        <textarea....id="t">

jquery---

$(docu.....
$('#copy').click(function(){
var range = $('#TextArea').getSelection();
alert(range.text);
});

});

当按下#copy 按钮时,警报不会在#t 中显示选定的文本。它是空白的。

我需要从文本区域中选择的文本

【问题讨论】:

  • 如果您真正提出问题,它会有所帮助。
  • 试试 console.log 或 .debug 看看会返回什么
  • Q 上的 -4 是什么意思?
  • 这个问题写得非常糟糕。你没有解释你自己尝试了什么,你没有说是否发生任何错误(并且没有发布错误消息)。您的代码格式错误且难以阅读。无论如何,我没有对此投反对票,但这只是因为我今天没有票了。
  • @oezi 你能告诉我这句话是什么意思吗?当按下#copy 按钮时,警报不会在#t 中显示所选文本。它是空白的。

标签: javascript jquery


【解决方案1】:

你的代码没有运行,因为这条语句失败了

var range = $('#TextArea').getSelection();

您提供的标记中没有 TextArea 作为 ID,因此脚本遇到错误并且不会继续。

如果您将警报放在顶部,我肯定会弹出警报框。 即

$('#copy').click(function(){
    alert(''); //this will work
    var range = $('#TextArea').getSelection();
    alert(range.text);
});

【讨论】:

  • 这样做了吗,range.text 空白(没有返回值),但是起点、终点都返回了
  • @Jean,你能先告诉我你的代码中#Textarea 的位置吗……你是想引用 textarea 元素吗
【解决方案2】:

getSelection是文档的一个方法,所以你应该这样做:

var range = document.getSelection();

还要注意,您必须在 IE 中使用 document.selection.createRange(),所以一切都会变得有点复杂。
查看this example 了解更多信息。你最终会需要这样的函数:

function getSelectedText(){
  if(document.all){
    var selection = document.selection;
    var newRng = selection.createRange();
    newRng.select();
    return newRng.htmlText;
  }else{
    return document.getSelection();
  }
}

应该返回选定的文本并在所有主要浏览器中工作。

编辑:
刚刚看到您正在使用某种 jquery-plugin (也许)应该使您的代码工作。问题是:

在您的 html 中,textarea 的 id 是“t”:

<textarea....id="t">

但在您的 javascript 中,您正在尝试选择 id "TextArea":

$('#TextArea').getSelection();

请将您的 textarea 的 id 更改为“TextArea”(或相反),看看会发生什么。

【讨论】:

    【解决方案3】:

    这个问题我不太清楚,但是如果你需要获取textarea的值,就用valjQuery方法吧:

    http://api.jquery.com/val/

    $('#copy').click(function(){
      var range = $('#t').val();
      alert(range);
    });
    

    【讨论】:

    • 我需要从 textarea 中选择的文本
    • 我做了并得到了插件 jquery.field.selection.js,并阅读了其中的所有内容,但 range.text 没有显示
    【解决方案4】:

    要么更改您的id="t",要么将#TextArea 更改为#t,以获取您在html 标记中的文本区域。

    但我不知道你正在使用什么插件或它想要什么。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多