Javascript 如何为window.getSelection值指定文本方向RTL,我尝试了如何从文本区域的现有值中删除getSelection

Javascript 如何为window.getSelection值指定文本方向RTL,我尝试了如何从文本区域的现有值中删除getSelection,javascript,html,css,Javascript,Html,Css,var F1=document.getElementById('samuText').value; 函数insertAtCursor() { if(window.getSelection) { sel=window.getSelection(); document.getElementById('samuText')。value=F1+sel//这里我需要从F1中删除所选的值 //警报(sel); //getElementById(sel.style.direction=“rtl”; } } S

var F1=document.getElementById('samuText').value;
函数insertAtCursor()
{
if(window.getSelection)
{
sel=window.getSelection();
document.getElementById('samuText')。value=F1+sel//这里我需要从F1中删除所选的值
//警报(sel);
//getElementById(sel.style.direction=“rtl”;
}
}

Samudrala RamuRLM
好的,您应该能够获取所选文本及其索引(文本位置)。我搜索了一下,没有找到任何从
获取文本位置的解决方案。但是提供了一种从
获取文本位置的方法。你可以。我把这两个答案结合起来,稍加修改。请注意,
changeValue
函数是操作文本的关键

<html>
<style>
#main {
    -moz-appearance: textfield-multiline;
    -webkit-appearance: textarea;
    border: 1px solid gray;
    font: medium -moz-fixed;
    font: -webkit-small-control;
    height: 28px;
    overflow: auto;
    padding: 2px;
    resize: both;
    width: 400px;
}
</style>

<body>
<div id="main" contenteditable>Samudrala RamuSamu</div>
<input type="button" onclick="changeValue()" unselectable="on" value="Get selection">
</body>

<script>
function getSelectionCharOffsetsWithin(element) {
    var start = 0, end = 0;
    var sel, range, priorRange;
    if (typeof window.getSelection != "undefined") {
        range = window.getSelection().getRangeAt(0);
        priorRange = range.cloneRange();
        priorRange.selectNodeContents(element);
        priorRange.setEnd(range.startContainer, range.startOffset);
        start = priorRange.toString().length;
        end = start + range.toString().length;
    } else if (typeof document.selection != "undefined" &&
            (sel = document.selection).type != "Control") {
        range = sel.createRange();
        priorRange = document.body.createTextRange();
        priorRange.moveToElementText(element);
        priorRange.setEndPoint("EndToStart", range);
        start = priorRange.text.length;
        end = start + range.text.length;
    }
    return {
        start: start,
        end: end,
        value: range.toString()
    };
}

function changeValue() {
    var mainDiv = document.getElementById("main");
    var sel = getSelectionCharOffsetsWithin(mainDiv);

    var mainValue = mainDiv.textContent;
    var newValue = mainValue.slice(0,sel.start) + mainValue.slice(sel.end) + sel.value;
    mainDiv.textContent = newValue;
}
</script>

</html>

#主要{
-moz外观:textfield多行;
-webkit外观:textarea;
边框:1px纯色灰色;
字体:中-moz固定;
字体:-webkit小控件;
高度:28px;
溢出:自动;
填充:2px;
调整大小:两者;
宽度:400px;
}
拉穆萨姆杜拉酒店
函数getSelectionCharOffsetsWithin(元素){
变量开始=0,结束=0;
变量选择、范围、优先级范围;
if(typeof window.getSelection!=“未定义”){
range=window.getSelection().getRangeAt(0);
priorRange=range.cloneRange();
优先级范围。选择节点内容(元素);
priorRange.setEnd(range.startContainer,range.startOffset);
start=priorRange.toString().length;
end=start+range.toString().length;
}else if(文件类型选择!=“未定义”&&
(sel=文件。选择)。类型!=“控制”){
range=sel.createRange();
priorRange=document.body.createTextRange();
priorRange.moveToElementText(元素);
priorRange.setEndPoint(“EndToStart”,范围);
开始=priorRange.text.length;
结束=开始+范围.text.length;
}
返回{
开始:开始,
完:完,,
值:range.toString()
};
}
函数changeValue(){
var mainDiv=document.getElementById(“main”);
var sel=getSelectionCharOffsetsWithin(mainDiv);
var mainValue=mainDiv.textContent;
var newValue=mainValue.slice(0,sel.start)+mainValue.slice(sel.end)+sel.value;
mainDiv.textContent=newValue;
}

是否要设置
的样式或在
文本区域中的其他内容中显示文本?您正试图使用文本选择的
id
设置样式,但该文本选择不存在,因此出现控制台错误。想<代码>警报(sel)将输出文本选择。。。。您正在使用该选项以该选择的id作为目标元素,但该选择不存在,因此不起作用。我想在该文本区域中从右向左更改选择文本样式方向,如果从Samudrala Ramu中选择Samudrala,然后单击RLM,该值应为该文本区域中的Ramu Samudrala。仅选择
Samu
,所需的输出是什么?您应该提供一些输入和输出示例。如果您从Samudrala Ramu中选择Samu,那么输出应该是“drala RamuSamu”,现在我想获得getSelection的起点,需要从文本区域的默认字符串值中删除该选择字符长度,但我如何才能做到这一点?任何主体都会给我一个想法。