【发布时间】:2021-07-01 05:18:36
【问题描述】:
我正在尝试使用 JavaScript 制作用于格式化 textarea 标记的选定文本(md 和/或 html)的按钮(如粗体、斜体等)。
有时有效,有时无效。
代码链接 https://jsfiddle.net/3gn75zLb
JS 代码
function formatText(style) {
var textarea_editor = document.getElementById('md-code');
//get Selection
var index_start = textarea_editor.selectionStart;
var index_end = textarea_editor.selectionEnd;
var text = textarea_editor.value;
var selectedText = text.substring(index_start, index_end);
var formatedText = selectedText;
//format
switch(style.toLowerCase()) {
case 'b':
var formatedText = "**"+selectedText+"**";
break;
case 'i':
var formatedText = "*"+selectedText+"*";
break;
case 'u':
var formatedText = "<u>"+selectedText+"</u>";
break;
case 'sup':
var formatedText = "<sup>"+selectedText+"</sup>";
break;
case 'sub':
var formatedText = "<sub>"+selectedText+"</sub>";
break;
case 'img':
var formatedText = "";
break;
default:
var formatedText = selectedText;
break;
}
textarea_editor.innerHTML = text.substring(0, index_start)+formatedText+text.substring(index_end, text.length);
}
有与按钮相关的点击事件调用formatText()函数
喜欢
formatText('b') 用
**将所选文本括起来,使其在markdown 中变为粗体。
问题
- 代码有问题吗?
- 有没有更好/更简单的方法可以使用 jQuery 或其他方法来做到这一点?
【问题讨论】:
-
使用代码 sn-p 功能发布您的代码。调试起来会更容易。
-
索姆·谢卡尔·穆克吉!我已将 jsfiddle 链接添加到 html 和 JavaScript
标签: javascript html text replace textarea