JSFiddle - React, Tailwind, and code Playground

HTML

<div onclick="setSelection()">Выделить</div>
<br/>
<div id="apotxt">
<span>
Это текст, который нужно выделить
</span>

</div>
<br/>
<div onmouseover="get_selection()" onclick="alert(aposelectedtext)">Получить выделенный текст</div>

JavaScript

function setSelection() {
    var target = document.getElementById('apotxt').getElementsByTagName('span')[0];
    var rng, sel;
    if (document.createRange) {
        rng = document.createRange();
        rng.selectNode(target)
        sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(rng);
    } else {
        var rng = document.body.createTextRange();
        rng.moveToElementText(target);
        rng.select();
    }
    get_selection();
}

function get_selection() {
    if (window.getSelection) {
        selection = window.getSelection().toString();
        selection = selection.replace(/\r\n\r\n/gi, "_doublecaret_");
        selection = selection.replace(/\r\n/gi, " ");
        selection = selection.replace(/_doublecaret_/gi, "\r\n\r\n");
    } else {
        selection = document.selection.createRange().text;
    }
    aposelectedtext = selection;
}