变量未进行精确选择-Javascript/Ajax

变量未进行精确选择-Javascript/Ajax,javascript,jquery,ajax,Javascript,Jquery,Ajax,我这里有这个代码: if (!window.TextSelect) { TextSelect = {}; } TextSelect.Selector = {}; TextSelect.Selector.getSelected = function () { var t = ''; if (window.getSelection) { t = window.getSelection(); } else if (document.getSelecti

我这里有这个代码:

if (!window.TextSelect) {
    TextSelect = {};
}

TextSelect.Selector = {};
TextSelect.Selector.getSelected = function () {
    var t = '';
    if (window.getSelection) {
        t = window.getSelection();
    } else if (document.getSelection) {
        t = document.getSelection();
    } else if (document.selection) {
        t = document.selection.createRange().text;
    }
    return t;
}

TextSelect.Selector.mouseup = function () {
    var st = TextSelect.Selector.getSelected();
    if (st != '') {
        $("#paragraphs div").removeClass("selected");

        goodoldst = st.toString();

        quoteExist = '';
        for (i = 0; i < assocs.length; i++) {

            if (st.toString().indexOf(assocs[i]) >= 0) {

                quoteExist = quoteExist + '1';

            } else {
                quoteExist = quoteExist + '0';
            }

        }

        console.log(quoteExist)

        if (quoteExist.indexOf('1') >= 0) {

            alert('ALREADY IN DATABASE!!!')

        } else {

            newst = '<div class="selected">' + st + '</div>';
            newvalue = paraval.replace(st, newst);
            $('#paragraphs').html(newvalue);
            if (newst != '' && $('.explanation').css('display') == 'none') {
                $('.explanation').toggle();
            }

            $('#newDescr').html(' SELECTED TEXT FORM <textarea id="thedescr" ></textarea><br><button onClick="sendNewDescr()">SUBMIT!</button>');
            if ($("#annotation").css("display") == "block") {
                $("#annotation").toggle();
            }

            makeitglob(goodoldst);

            $.post('ajax.php?q=a', {
                newstajax: newst
            }).done(function (data) {
                //$('.explanation').html(data);

            });
        }
    }
}
问题是,如果我选择了一些文本,如果我之前有特定的选择,它会选择该选择的第一个匹配项,而不是我选择的。最大的问题是当我选择一个字母时,比如说D。不是从段落中选择字母D,而是从标记DIV中选择D。我想得到准确的选择,而不是第一次出现。谢谢

试试这个。这是同样的问题。如果我选择最后一个文本,然后单击“突出显示”,则最后一个文本被选中。我希望我选择的那一个得到高度评价,即使它是最后一个或中间的一个。我指的是文本这个词

我想做的是建立一个像Genius这样的系统

我希望在数据库中有与段落中的文本相关的解释

任何人???

getRangeAt返回的Range对象包含startOffset和endOffset,这是字符串中所选内容的开始/结束索引


关于使用偏移量的示例,请参见此提琴:

您能简单介绍一下您正在尝试解决的选择问题吗?不清楚你想做什么,这是Ajax。不能放在那里。我只能提供一个链接。。。但我正试图避免这种情况。好吧,问题不在于ajax,是吗?移除帖子,它应该仍然能够说明问题。如果人们不能重现这个问题,那么很难帮助你解决它。试试这个。这是同样的问题。如果我选择最后一个文本,然后单击“突出显示”,则最后一个文本被选中。我想让我选的那一个得到高度评价我能提出另一个建议吗?为什么不用css突出显示所选文本?如果我理解正确,您将获得所选文本,然后返回同一控件以高亮显示它。所选的div是否重要,或者这真的只是对所选内容的样式更改?非常有用!但是如果我只从一个单词中选择一个字母,那么我就从同一个单词中选择另一个字母,第二个字母会出现在段落的开头。为什么会这样?这是如此接近我要找的!问题是偏移量是从上一个节点计算的,而不是从原始文本块的起点计算的。因此,当我们插入一个跨距节点时,上一个选择之外的每个选择都将计算距离跨距的偏移量,而不是文本的开头。如果你不在乎保留选择,这里有一个小把戏:如果你在乎的话,那就要复杂得多,因为你需要合并跨距的内容。我真的不明白。您所说的保留跨距的内容是什么意思?我需要将这个选择存储在一个数据库中,然后将它发送回JavaScription解决我的所有问题。非常感谢!我试图让它在鼠标上工作,而不是点击。它第一次起作用,然后就不起作用了。为什么会这样?