Javascript 单击时如何格式化div中的文本行?

Javascript 单击时如何格式化div中的文本行?,javascript,jquery,Javascript,Jquery,使用jQuery或straight javascript,如何识别/选择/选择打开contentEditable的div中的一行文本,并仅向该行文本添加格式? 我目前有一个contentEditable设置为true的div,它允许用户编辑div的内容,添加/删除他们认为合适的文本。但是,我希望用户也能够双击div中的任何文本行,并使用不同的格式样式标记该行。(即,将文本的整行括在跨距内,然后设置跨距的样式。请注意,我可以轻松设置跨距的样式。我的问题在于识别用户单击的文本行并将其括在跨距标记中)

使用jQuery或straight javascript,如何识别/选择/选择打开contentEditable的div中的一行文本,并仅向该行文本添加格式?

我目前有一个contentEditable设置为true的div,它允许用户编辑div的内容,添加/删除他们认为合适的文本。但是,我希望用户也能够双击div中的任何文本行,并使用不同的格式样式标记该行。(即,将文本的整行括在跨距内,然后设置跨距的样式。请注意,我可以轻松设置跨距的样式。我的问题在于识别用户单击的文本行并将其括在跨距标记中)

请注意,由于用户可以添加大量内容,因此div本身是可滚动的,因此任何解决方案都应该能够处理滚动。

jQuery将允许您获取用户选择的文本

至于用span包装所选行,通常的方法应该可以做到这一点。

jQuery将允许您获得用户选择的文本


至于用span包装所选行,通常的方法应该可以做到这一点。

对于Firefox,您可以使用:

// This will give the first selection:
var range = window.getSelection().getRangeAt(0);
var txt = range.toString();
var spn = document.createNode('span');
spn.innerHTML = txt;
// Here you can apply style to spn
range.surrondContents(spn); // It will surround your selected text
以下是获取更多帮助的链接:

对于IE,您可以使用: 你也可以在IE中使用相同的过程。。使用范围和选择


希望它能解决您的问题。

对于Firefox,您可以使用:

// This will give the first selection:
var range = window.getSelection().getRangeAt(0);
var txt = range.toString();
var spn = document.createNode('span');
spn.innerHTML = txt;
// Here you can apply style to spn
range.surrondContents(spn); // It will surround your selected text
以下是获取更多帮助的链接:

对于IE,您可以使用: 你也可以在IE中使用相同的过程。。使用范围和选择


希望它能解决您的问题。

文本是否被包装,或每行之间是否有清晰的分隔(通过
或类似方式)?在前一种情况下,我认为这很难,甚至不可能。据我的研究表明,当使用contentEditable时,firefox会用
分隔每一行。我相信IE用段落分隔每一行。更正:当你在contentEditable打开的情况下向div添加内容时,我不知道IE是如何分隔这些行的(没有firebug,IE开发工具栏没有帮助)。文本是否被包装或每一行都被清楚地分隔(通过
或类似方式)?在前一种情况下,我认为这很难,甚至不可能。据我的研究表明,当使用contentEditable时,firefox会用
分隔每一行。我相信IE会用段落分隔每一行。更正:当你在contentEditable打开的情况下向div添加内容时,我不知道IE是如何分隔行的(没有firebug,IE开发工具栏没有帮助)。看起来fieldSelection插件只适用于文本字段和文本区域。我的显示区域是一个div(打开contentEditable)完全忘记了在寻找解决方案时使用的是一个div。我认为值得补充的是,我已经修补了其他几个jQuery插件,以便在原作者不打算使用的环境中工作。这可能是fieldSelect插件的一个选项,如果您在其他地方找不到解决方案,这可能是最好的选择。如果你选择走那条路,并且需要一些帮助,请告诉我。注意,谢谢。我不确定我是否会这样做,但是如果我这样做并且需要帮助,我一定会问。看起来fieldSelection插件只适用于文本字段和文本区域。我的显示区域是一个div(打开contentEditable)完全忘记了在寻找解决方案时使用的是一个div。我认为值得补充的是,我已经修补了其他几个jQuery插件,以便在原作者不打算使用的环境中工作。这可能是fieldSelect插件的一个选项,如果您在其他地方找不到解决方案,这可能是最好的选择。如果你选择走那条路,并且需要一些帮助,请告诉我。注意,谢谢。我还不确定我是否会走那条路,但如果我走了,需要帮助,我一定会问。