Невозможно выбрать все TD внутри одной таблицы по событию Click - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь выбрать / выделить все tds в таблице (для копирования), используя следующий код, но я получаю эту ошибку

Failed to execute 'selectNode' on 'Range': parameter 1 is not of type 'Node'.

Не могли бы вы сообщить мне, что я делаю здесь неправильно?

function selectElementContents(el) {
    var body = document.body, range, sel;
    if (document.createRange && window.getSelection) {
        range = document.createRange();
        sel = window.getSelection();
        sel.removeAllRanges();
        try {
            range.selectNodeContents(el);
            sel.addRange(range);
        } catch (e) {
            range.selectNode(el);
            sel.addRange(range);
        }
    } else if (body.createTextRange) {
        range = body.createTextRange();
        range.moveToElementText(el);
        range.select();
    }
}

$("#select").on("click", function(){
  selectElementContents($("#table"));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table" border=1>
    <thead>
        <tr><th>Heading</th><th>Heading</th></tr>
    </thead>
    <tbody>
        <tr><td>cell</td><td>cell</td></tr>
    </tbody>
</table>

<input type="button" value="select table" id="select" />

1 Ответ

2 голосов
/ 24 апреля 2020

В настоящее время вы передаете коллекцию jQuery при вызове selectElementContents:

selectElementContents($("#table"));

Вместо этого вы должны передать фактический узел .

selectElementContents($("#table").get(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...