使用链接多次选择文本

Select text using a link multiple times

本文关键字:选择 文本 链接      更新时间:2024-06-28

我在网上找到了以下代码,运行良好。我想在同一页面上的多个元素上使用它,但不知道如何做到这一点。我可以让第一个上班,但不能让第二个上班。

有人能帮忙吗?

谢谢,

约翰·

Javascript:

    function SelectText(element) {
    var doc = document
        , text = doc.getElementById(element)
        , range, selection
    ;    
    if (doc.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if (window.getSelection) {
        selection = window.getSelection();        
        range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}
document.onclick = function(e) {    
    if (e.target.className === 'select') {
        SelectText('some_text');
    }
};

HTML:

<span id ='some_text'>Text to select </span><span class='select'>select</span>
<span id ='more_text'>More text to select</span><span class='select'>select</span>

因为您使用相同的参数调用函数。

SelectText('some_text');

无论您单击什么class="select",都将选择"要选择的文本"。

试试这个代码:

function SelectText(element) {
    var doc = document
    , text = doc.getElementById(element)
    , range, selection;    
    if (doc.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(text);
        range.select();
    } else if (window.getSelection) {
        selection = window.getSelection();        
        range = document.createRange();
        range.selectNodeContents(text);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}
document.onclick = function(e) {    
    if (e.target.className === 'select') {
        SelectText(e.target.getAttribute('data-id'));
    }
};

并更改HTML:

<span id ='some_text'>Text to select </span><span class='select' data-id="some_text">select</span>
<span id ='more_text'>More text to select</span><span class='select' data-id="more_text">select</span>

您可以为每个跨度指定一个特殊属性,其中包含要选择的元素的id:

//JS
SelectText(e.target.attributes["select"].value);
//HTML
<span class='select' select="some_text">select</span>
<span class='select' select="more_text">select</span>

或者,如果元素的顺序总是相似的,并且不太可能更改,则可以检索上一个同级:

SelectText(e.target.previousSibling.id);

对于您的案例,您可以执行:

SelectText(e.target.previousSibling.id);