是否可以更改textnode对象的anchornode?

时间:2010-07-21 18:15:43

标签: javascript

这是我的代码:

function moremagic()
    {
        var txt = '';
         if (window.getSelection)
        {
            txt = window.getSelection();
                 }
        else if (document.getSelection)
        {
            txt = document.getSelection();
                }
        else if (document.selection)
        {
            txt = document.selection.createRange().text;
                }
        else return;
    if(txt=="" || txt==" "){
        alert("No Text Selected");
        return;}
    var start = txt.anchorOffset;
    var countstring = txt.toString();
    alert(txt.anchorNode);
    var end = txt.anchorOffset+countstring.length;
    var type = prompt("Annotation Type: ");
    if(type=="lp-token"){
        var description = prompt("Lisp Statement: ");}
    else if(type=="section-head-annotation"){
        var description = "Section Head";}
    else if(type=="list-item-annotation"){
        var description = "list-element";}
    else if(type=="sentence-annotation"){}
    else {var description = prompt("Description: ");}
    Arraystring = Arraystring+"#"+type+"#"+description+"#"+start+"#"+end;
    alert(Arraystring);
    var custom = document.getElementById("custom");
    custom.value=Arraystring;
    }

它从光标突出显示的文本生成一个textnode对象,但是这个函数被调用很多次,而对于每个不同的高亮显示,anchorNode都会改变。我需要使用anchorNode作为所有已创建的textnode对象的常量。有没有什么方法可以改变textobject的anchorNode?谢谢!

1 个答案:

答案 0 :(得分:0)

不完全确定你想要实现的目标,但在阅读这个http://help.dottoro.com/ljkstboe.php时,我不得不说“不,没有办法让anchorNode保持不变”,因为它基于选择。现在,如果您总是希望在特定选择中引用所选字符串中的第一个字符(假设选择只是textNode),那么您可以执行此操作(替换{ {1}}是):

var start

这是因为如果从右到左而不是从左到右进行选择,大多数浏览器将anchorNode放在最后一个字符而将focusNode放在选择的第一个字符处,因为anchorNode指示where用户开始了他们的选择