html 使用JavaScript复制到JavaScript:多个输入值,但只有一个函数?

o3imoua4  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(140)

我试图创建一个小的(本地)页面,允许我通过点击按钮将常用文本复制到剪贴板。
我的代码(见下文)到目前为止工作。
我的问题是:
有没有一种方法可以调整JavaScript代码,这样我就不必为每个新字段(有非常非常多的字段)创建自己的/新的Javascript函数,并且永远不必再次调整Javascript代码?

  1. <html>
  2. <head>
  3. <title>Copy!</title>
  4. <script>
  5. function c1() {
  6. var c = document.getElementById("c1");
  7. navigator.clipboard.writeText(c.value);
  8. }
  9. function c2() {
  10. var c = document.getElementById("c2");
  11. navigator.clipboard.writeText(c.value);
  12. }
  13. </script>
  14. </head>
  15. <body>
  16. <span>
  17. I want to be copied!<br />
  18. <input type="text" value="First value to be copied" id="c1"> <button onclick="c1()">Copy the first value!</button>
  19. </span>
  20. <br /><br />
  21. <span>
  22. But I also want to be copied<br />
  23. <input type="text" value="And the second value" id="c2"> <button onclick="c2()">And now the second!</button>
  24. </span>
  25. </body>
  26. </html>

字符串

5anewei6

5anewei61#

首先,在“copyable”区域中添加一个事件监听器。点击时,检查点击的目标是一个按钮,或者它有一个按钮作为其父按钮(以确保我们在按钮中包含文本)。如果我们在按钮中点击,获取它的前一个元素兄弟,输入并将其值复制到剪贴板。

  1. document.querySelector("div#copyable").addEventListener(
  2. "click",
  3. function(e) {
  4. const theButton = e.target.closest("button");
  5. if (theButton) {
  6. const theText = theButton.previousElementSibling.value;
  7. navigator.clipboard.writeText(theText);
  8. console.log("now try pasting somewhere")
  9. }
  10. }
  11. )

个字符

wgeznvg7

wgeznvg72#

编辑的解决方案。我相信会有一个更好的方法来做到这一点。但这段代码现在工作。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Copy To Clipboard</title>
  7. </head>
  8. <body>
  9. <!-- Text 1 -->
  10. <form class="copyText">
  11. <input type="text" />
  12. <button>Copy Text</button>
  13. </form>
  14. <!-- Text 2 -->
  15. <form class="copyText">
  16. <input type="text" />
  17. <button>Copy Text</button>
  18. </form>
  19. <!-- JavaScript -->
  20. <script>
  21. const copyText = document.getElementsByClassName("copyText");
  22. for(let i = 0; i < copyText.length; i++) {
  23. copyText[i].addEventListener('submit', function(e) {
  24. // Prevent Default (It's required)
  25. e.preventDefault()
  26. // In my case 0 element is input
  27. navigator.clipboard.writeText(e.target.children[0].value)
  28. })
  29. }
  30. </script>
  31. </body>
  32. </html>

字符串

展开查看全部

相关问题