Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择文本并更新他_Javascript_Jquery - Fatal编程技术网

Javascript 选择文本并更新他

Javascript 选择文本并更新他,javascript,jquery,Javascript,Jquery,我在一个有按钮的文本区域中有一个非常大的文本,我想做的就是: 1-单击此按钮后,自动获取用户用鼠标选择的文本的jquery部分,并在此文本区域中围绕文本创建2个标记 例如: 文本区域中的现有文本: Lorem Ipsum只是印刷和排版的虚拟文本 工业。Lorem Ipsum已成为业界的标准虚拟文本 从16世纪开始,一个不知名的印刷工在厨房里打字 然后把它拼凑成一本样本书。它没有幸存下来 只有五个世纪,而且是电子排版的飞跃, 基本保持不变。它在20世纪60年代开始普及 发布包含Lorem Ipsu

我在一个有按钮的文本区域中有一个非常大的文本,我想做的就是:

1-单击此按钮后,自动获取用户用鼠标选择的文本的jquery部分,并在此文本区域中围绕文本创建2个标记

例如:

文本区域中的现有文本:

Lorem Ipsum只是印刷和排版的虚拟文本 工业。Lorem Ipsum已成为业界的标准虚拟文本 从16世纪开始,一个不知名的印刷工在厨房里打字 然后把它拼凑成一本样本书。它没有幸存下来 只有五个世纪,而且是电子排版的飞跃, 基本保持不变。它在20世纪60年代开始普及 发布包含Lorem Ipsum通道的Letraset表,以及 最近使用的是像Aldus PageMaker这样的桌面发布软件 包括Lorem Ipsum的版本

鼠标选择的文本:

16世纪,一个不知名的印刷商拿起一个印刷机,把它翻了个底朝天 制作一本样书。它不仅存活了五个世纪 ,同时也是向电子排版的飞跃

单击按钮后会发生什么:

Lorem Ipsum只是印刷和排版的虚拟文本 工业。Lorem Ipsum一直是业界标准的虚拟文本 自15世纪以来,当一个不知名的印刷商在厨房里打字时 然后把它拼凑成一本样本书。它没有幸存下来 只有五个世纪,但也飞跃到电子 排版,[/INFO]基本保持不变。是的 20世纪60年代,随着Letraset床单的发行而流行起来 包含Lorem Ipsum段落,最近使用桌面 发布软件,如Aldus PageMaker,包括Lorem版本 Ipsum


我没有尝试过任何东西,但我不知道是谁选择了所选的文本,并将其更新到文本区域。

虽然可以使用jQuery的
replace()
函数,但这只会替换高亮显示的内容的第一个实例,而不是实际高亮显示的内容。但是,您可以通过获取选择的边界并相应地拆分字符串来解决此问题:

$("button").click(function () {
    var selection = window.getSelection(),
        text = "[INFO]" + selection + "[/INFO]",
        content = $("div").text(),
        range = selection.getRangeAt(0),
        startText = content.substring(0, range.startOffset), // cut from 0 to beginning of highlight
        endText = content.substring(range.endOffset, content.length); // cut from end of highlight to end of text
    $("div").html(startText + text + endText);
});
然而,这有时会变得更复杂


你试过什么?你有什么代码和我们分享吗?看看这个:你试过什么吗?你能和我们分享一下吗?