<h3>Something here</h3>
            <p id="copythis">Copy this code</p>

            <h3>Something here</h3>
            <p id="copythisone">Copy this other text</p>

            <h3>Something here</h3>
            <p id="copythisone">Copy this other text</p>


    <script type="text/javascript">
        $(document).ready(function(){
            $('#copythis').click(function(){

                var text = $("#copythis").get(0)
                var selection = window.getSelection();
                var range = document.createRange();
                range.selectNodeContents(text);
                selection.removeAllRanges();
                selection.addRange(range);
                document.execCommand('copy');
            })
        });
    </script>

Мне нужно скопировать разные тексты (не все сразу).

Этот код работает только для одного текста. Как мне работать более чем на одного?

Я просто изменил эту часть, и она сработала:

```var text = $(this).get(0)```

Спасибо @wahwahwah

0
Ruan 17 Сен 2021 в 21:39

2 ответа

Лучший ответ
$('#copythis').on("click", function(){
    console.log($(this).text() + ": you clicked on '#copythis' ");
});

$('.copy').on("click", function(){
    console.log($(this).text() + ": you clicked on a element with the class 'copy'");
});

$('p').on("click", function(){
    console.log($(this).text() + ": you clicked on a <p> element'");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Something here</h3>
<p id="copythis" class="copy">Copy this code</p>

<h3>Something here</h3>
<p id="copythisone" class="copy">Copy this other text</p>

<h3>Something here</h3>
<p id="copythisone" class="copy">Copy this other text</p>

С JQuery вы можете использовать .text() для получения содержимого элемента p. Вы также можете изменить свой селектор, чтобы просто захватить содержимое всех элементов 'p'. Селектор идентификатора .(#copythis) захватит элемент, связанный только с этим идентификатором. Селектор класса (.copy) будет прикреплен ко всем элементам с классом «копия».

Это поможет вам определить, на что нажимают. То, что вы хотите с ним сделать - скопировать содержимое в буфер обмена - может немного изменить логику в зависимости от того, есть ли у вас контроль над источником HTML, и как вы решаете, что копировать, а что нет.

1
wahwahwah 17 Сен 2021 в 19:22

Я не знаю, что вы собираетесь делать, но в основном эта строка

var text = $("#copythis").get(0);

Это место, где p-узел будет выбран из вашего домена, и впоследствии содержимое этого p-тега будет скопировано.

Измените это на

var text = $("#copythisone").get(0);

Скопировать содержимое 2-го p-тега

Вы можете изменить идентификатор своего третьего p-тега на sth. как copythisonetoo

 var text = $("#copythisonetoo").get(0);

Чтобы получить содержимое 3-го тега p.

Но по определению идентификатор должен быть уникальным в вашем документе. Обратитесь к этой ссылке: https://www.w3schools.com/html/html_id.asp#:~:text=The%20id%20attribute%20specifies%20a,element%20with%20the%20specific%20id.

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

С некоторой дополнительной информацией и вашим конкретным вариантом использования мы, вероятно, могли бы вам больше всего помочь.

0
gemorra 17 Сен 2021 в 19:05