当前位置: 首页 > 知识库问答 >
问题:

从剪贴板中的多个div复制多个文本

杜河
2023-03-14

所以我在超文本标记语言文件中嵌套了div标记。我试图从每个div标记中复制某些文本。经过几个小时的寻找,我终于找到了有效的解决方案。下面的解决方案:

    <html>
        <body>
            <div id="a" onclick="copyDivToClipboard()"> Click to copy </div>
            <script>
                function copyDivToClipboard() {
                    var range = document.createRange();
                    range.selectNode(document.getElementById("a"));
                    window.getSelection().removeAllRanges(); // clear current selection
                    window.getSelection().addRange(range); // to select text
                    document.execCommand("copy");
                    window.getSelection().removeAllRanges();// to deselect
                }
            </script>
        </body>
    </html>

但因为它使用的是id,所以它只对firstdiv起作用。然后我将id更改为class,但之前找到的解决方案不起作用。我的HTML文件如下:

<div>
  <div onclick="copyTextToClipboard()">
    <span>My favorite actor is <span class="text_to_copy">Robert Downey, Jr.</span></span>
  </div>
  <div onclick="copyTextToClipboard()">
    <span>My favorite actor is <span class="text_to_copy">Tom Cruise</span></span>
  </div>
  <div onclick="copyTextToClipboard()">
    <span>My favorite actor is <span class="text_to_copy">Hugh Jackman</span></span>
  </div>
  <div onclick="copyTextToClipboard()">
    <span>My favorite actor is <span class="text_to_copy">Ryan Gosling</span></span>
  </div>
</div>

在评论了我找到的解决方案后,他建议我检查Range.set开始()Range.set结束()。但是我只是不知道如何应用这些,因为我对Javascript还不熟悉。

另外,这几个span标记也用于不同的类进行样式设置。

共有1个答案

莫承运
2023-03-14

我修改了你的代码,请看一下,看看这是否有帮助。

var elements = document.getElementsByClassName("parentDiv");

Array.from(elements).forEach(function(element) {
  element.addEventListener('click', copyTextToClipboard);
});

function copyTextToClipboard() {
  var selection = window.getSelection();
  var range = document.createRange();
  let dataToCopy = this.getElementsByClassName('text_to_copy');
  range.selectNodeContents(dataToCopy[0]);
  selection.removeAllRanges();
  selection.addRange(range);
  document.execCommand("Copy");
  window.getSelection().removeAllRanges()
}
html lang-html prettyprint-override"><html>

<body>
  <div>
    <div class="parentDiv">
      <span>My favorite actor is <span class="text_to_copy">Robert Downey, Jr.</span></span>
    </div>
    <div class="parentDiv">
      <span>My favorite actor is <span class="text_to_copy">Tom Cruise</span></span>
    </div>
    <div class="parentDiv">
      <span>My favorite actor is <span class="text_to_copy">Hugh Jackman</span></span>
    </div>
    <div class="parentDiv">
      <span>My favorite actor is <span class="text_to_copy">Ryan Gosling</span></span>
    </div>
  </div>
</body>

</html>
 类似资料:
  • 我正在使用以下脚本将div复制到剪贴板。但是我试图用同一个按钮复制多个div(DivA DivB),同时在每个div周围添加一些引号和括号。我看到了一些答案(比如这个和这个),但我似乎无法在当前脚本中实现它们。 所以输出应该是这样的: 这是当前复制一个div的脚本。

  • 问题内容: 这是我在用户单击此按钮时的代码: 如何在此div中复制文本? 问题答案: JAVASCRIPT:

  • 这是用户点击此按钮时的代码: 如何复制此div中的文本?

  • 问题内容: 在我的Go语言命令行应用程序中,我需要能够使用Go将某些文本片段复制到系统剪贴板。基本上类似于PyperClip,但适用于Go。 我正在寻找与平台无关的解决方案!任何帮助将是巨大的:) 问题答案: 一个项目(仅适用于Windows和Mac)似乎正在接近您想要的:。 提供复制和粘贴到剪贴板的Go。 剪贴板_linux.go类中提供Linux支持:系统命令的简单包装。 另一种方法:尝试利用

  • 问题是,从vim到剪贴板的复制/粘贴停止工作。我不知道为什么。。。 在中,我也没有看到和缓冲区... 这是我的。vimrc,如果需要的话。 有什么建议吗? 谢谢

  • 我想在Android API上测试剪贴板,所以我开始使用Android的ClipboardManager和ClipData类创建一个简单的应用程序。我遵循了Android网站上的“复制和粘贴”指南,尽管我必须填写几个地方,因为该指南没有每行必要的代码(但我最终不得不注释掉Intent和URI粘贴方法,因为它没有给出具体的示例,因为我假设数据是多种多样的)。我运行了应用程序,但由于某种原因,我发送的