gpt4 book ai didi

javascript - 在内容可编辑的 DIV 中将 bb 代码包裹在选定的文本周围

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:28 26 4
gpt4 key购买 nike

所以我正在尝试创建一个 RTE 环境。我有一个内容可编辑的 div,我想让用户选择文本,然后按下一个将 BBCode 环绕在其周围的按钮。

我尝试创建以下函数,但是,所选文本只是被替换了。它似乎没有在 selectedText 中存储正确的值

function wrap(tag) 
{


var sel, range;
if (window.getSelection)
{
sel = window.getSelection();
if (sel.rangeCount)
{
range = sel.getRangeAt(0);
var selectedText = range;
range.deleteContents();
range.insertNode(document.createTextNode('['+tag+']'+selectedText+'[/'+tag+']'));
}
}
else if (document.selection && document.selection.createRange)
{
range = document.selection.createRange();
selectedText = document.selection.createRange().text;
console.log(text);
range.text = '['+tag+']'+text+'[/'+tag+']';
}
}


</script>

JQuery 是可以接受的,但我更喜欢常规的 Javascript。

最佳答案

selectedText = range; 更改为 selectedText = range.toString();。范围是一个对象,当您执行 deleteContents 时,它会清除数据,因此不会换行。

DEMO

JS:

function wrap(tag) {
var sel, range;
var selectedText;
if (window.getSelection) {
sel = window.getSelection();

if (sel.rangeCount) {
range = sel.getRangeAt(0);
selectedText = range.toString();
range.deleteContents();
range.insertNode(document.createTextNode('[' + tag + ']' + selectedText + '[/' + tag + ']'));
}
}
else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
selectedText = document.selection.createRange().text + "";
range.text = '[' + tag + ']' + selectedText + '[/' + tag + ']';
}

}

关于javascript - 在内容可编辑的 DIV 中将 bb 代码包裹在选定的文本周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com