在<;textarea>;使用JavaScript

在<;textarea>;使用JavaScript,javascript,dom,Javascript,Dom,当我使用鼠标在上选择一些文本时,我如何通过单击按钮将其洗牌/置乱 我搜索了一些类似于我在这里想要的东西,我看到一些人使用了子字符串,选择开始,和选择结束 我想要的是:当我用鼠标选择一些文本时,当我点击一个按钮时,它将被洗牌/置乱,而上未选择的其余文本应保持不变/完整 我只想对选定的文本执行一个操作 它更类似于富格文本编辑器,如在某些文本上选择,然后单击bold按钮,所选文本将变为bold 附言。 它应该由单个字符洗牌 编辑: 知道了!我只需要分离选择字符串。我的代码现在可以工作了。这是非常有用的

当我使用鼠标在
上选择一些文本时,我如何通过单击按钮将其洗牌/置乱

我搜索了一些类似于我在这里想要的东西,我看到一些人使用了
子字符串
选择开始
,和
选择结束

我想要的是:当我用鼠标选择一些文本时,当我点击一个按钮时,它将被洗牌/置乱,而
上未选择的其余文本应保持不变/完整

我只想对选定的文本执行一个操作

它更类似于富格文本编辑器,如在某些文本上选择,然后单击bold按钮,所选文本将变为bold

附言。 它应该由单个字符洗牌

编辑: 知道了!我只需要分离选择字符串。我的代码现在可以工作了。这是非常有用的-


不幸的是,IE 9及以下版本不支持
上的
selectionStart
selectionEnd
属性。以下是对我有效的解决方案-

您可以访问全文,并知道选择开始和结束的子字符串。试着这样做:

var txtArea = document.getElementById("foo");
var before = txtArea.value.substr(0, txtArea.selectionStart);
var selection = txtArea.value.substr(txtArea.selectionStart, txtArea.selectionEnd + 1);
var after = txtArea.value.substr(txtArea.selectionEnd, txtArea.value.length);
txtArea.value = before + scrambleThisString(selection) + after;

假设您使用ID
content
命名textarea:

var textarea = document.getElementById('content');
var content = textarea.value;

var start = textarea.selectionStart;
var end = textarea.selectionEnd;

var before = content.slice(0, start);
var after = content.slice(end);
var selected = content.substring(start, end);
selected = shuffleStringByMagic(selected);

textarea.value = before + selected + after;

应该如何洗牌?用文字还是用单个字符?@Michael-先生,应该用单个字符来洗牌。先生,谢谢你的贡献。这正好帮助我找出了我的代码的错误。请记住,
selectionStart
selectionEnd
在IE<9中不受支持。谢谢您,先生@TimDown+谢谢你指出这一点。试过你的推荐信,效果很好。