Javascript - 在一页上复制多个文本区域的文本按钮

2024-03-11

我已经搜索过该网站的类似问题,但我仍然不知所措。

基本上,我正在为一位即将离职的同事接手一个项目。他的 Intranet 页面计划应该有多个文本区域,每个文本区域都有自己的预定义文本和自己的“复制文本”按钮。

单击时,它会复制到用户的剪贴板。我拆开了代码,无论出于何种原因,当我添加新的文本区域和按钮时,它都不会复制。第一个会的。

我错过了什么或做错了什么?

<html>
<head>
    <script>
    window.onload = function () {
        var copyTextareaBtn = document.querySelector('.js-textareacopybtn');

        copyTextareaBtn.addEventListener('click', function (event) {
            var copyTextarea = document.querySelector('.js-copytextarea');
            copyTextarea.select();

            try {
                var successful = document.execCommand('copy');
                var msg = successful ? 'successful' : 'unsuccessful';
                console.log('Copying text command was ' + msg);
            } catch (err) {
                console.log('Whoops, unable to copy');
            }
        });
    }
    </script>
</head>
<body>
    <p>Test #1 </p>

    <div>
        <textarea class="js-copytextarea" readonly="readonly" style="width:20%;" 
        rows="5">Hello. This is textarea test bed #1</textarea>
        <button class="js-textareacopybtn">Copy Text (works)</button>

        <p>Test #2:</p>

        <textarea class="js-copytextarea" readonly="readonly" style="width:20%;" 
        rows="5">Hi! Welcome to textarea test bed #2 </textarea>
        <button class="js-textareacopybtn">Copy Text (broken)</button>
    </div>
</body>
</html>

它不起作用,因为您仅将第一个按钮连接到单击事件,因为您仅获得对第一个按钮的引用:

var copyTextareaBtn = document.querySelector('.js-textareacopybtn');

将其更改为:

var copyTextareaBtn = document.querySelectorAll('.js-textareacopybtn');

.querySelector() https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector只返回对它找到的与选择器匹配的第一个元素的引用。querySelectorAll() https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll返回一个节点列表,其中包含与选择器匹配的所有元素。

接下来,您需要将单击事件附加到该节点列表中的每个元素,如果将这些节点列表转换为数组,则.forEach() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach方法使循环变得非常容易。

请参阅下面更新的代码:

window.onload = function () {
  // Get all the elements that match the selector as arrays
  var copyTextareaBtn = Array.prototype.slice.call(document.querySelectorAll('.js-textareacopybtn'));
  var copyTextarea = Array.prototype.slice.call(document.querySelectorAll('.js-copytextarea'));

  // Loop through the button array and set up event handlers for each element
  copyTextareaBtn.forEach(function(btn, idx){
  
    btn.addEventListener("click", function(){
    
      // Get the textarea who's index matches the index of the button
      copyTextarea[idx].select();

      try {
        var msg = document.execCommand('copy') ? 'successful' : 'unsuccessful';
        console.log('Copying text command was ' + msg);
      } catch (err) {
        console.log('Whoops, unable to copy');
      } 
      
    });
    
  });
}
<div>
  <p>Test #1 
    <textarea class="js-copytextarea" readonly="readonly" style="width:20%;" 
              rows="5">Hello. This is textarea test bed #1</textarea>
    <button class="js-textareacopybtn">Copy Text (works)</button>
  </p>

  <p>Test #2:
    <textarea class="js-copytextarea" readonly="readonly" style="width:20%;" 
              rows="5">Hi! Welcome to textarea test bed #2 </textarea>
    <button class="js-textareacopybtn">Copy Text (broken)</button>
  </p>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript - 在一页上复制多个文本区域的文本按钮 的相关文章

  • HTML 表单未运行 (withSuccessHandler) 函数

    我在 Google App Script Sheets 中有一个 HTML 表单 它要求用户提供日期值 然后提交该值 HTML 表单运行 唯一的问题是 obj 不记录 我不明白这是为什么 HTML
  • jQuery 在附加元素后立即返回 div 元素的高度 0

    我有一个浮动 div 最初没有内容 我使用 jQuery 将一组元素附加到 div 然后立即调用原始 div 的 height 方法 我添加的元素在样式表中具有定义的最小高度 而浮动 div 则没有 问题是 当我在原始 div 上调用 he
  • 当key未知时如何获取js对象中的属性值

    我有一个对象数组 a 81 25 p 81 25 81 26 p 81 26 我想循环遍历数组并获取值p在每个元素中 for var key in a console log a key outputs 81 25 Object How d
  • 如何使用 JavaScript 压缩文件?

    有没有办法使用 JavaScript 来压缩文件 例如 在雅虎邮件中 当您选择下载电子邮件中的所有附件时 它会被压缩并下载到单个 zip 文件中 JavaScript 能够做到这一点吗 如果是这样 请提供一个编码示例 我发现这个图书馆叫js
  • 如何使用 javascript 将我的域名字母大写?

    假设我的域名是www hello com 如何使用 jQuery JavaScript 使浏览器的 URL 栏看起来像 www HELLO com 您无法更改浏览器地址栏中显示的内容 这是一项基本的安全功能 您可以使您的域名全部大写 并将页
  • 当系列没有相同的时间值时,如何在工具提示中显示所有系列

    我有一个显示多个时间序列的图表 不同时间序列不会同时采样 有没有办法在工具提示中显示所有系列 在示例中 您可以看到所有系列都包含在前 2 个点的工具提示中 因为它们是同时采样的 其余点仅包含 1 个系列 var myChart echart
  • 复合组件和 CSS

    I have newcss css formdiv width 30 margin 150 auto 和复合组件
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表
  • axios 如何将 blob 与 arraybuffer 作为响应类型处理?

    我正在下载一个 zip 文件axios https www npmjs com package axios 为了进一步处理 我需要获取已下载的 原始 数据 据我所知 Javascript 有两种类型 Blob 和 Arraybuffers
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • 如何将类组件中的 props 发送到功能组件?

    我是 ReactJS 的初学者 需要知道如何将一个页面中的 props 值发送到另一个页面 道具位于第一页上我可以获取类组件值如何获取另一页中的值 提前致谢 墙色 jsx import React Component from react
  • 如何在 Node.js 中打开 Windows-1255 编码文件?

    我有一个 Windows 1255 希伯来语 编码的文件 我希望能够在 Node js 中访问它 我尝试使用打开文件fs readFile 它给了我一个Buffer我无能为力 我尝试将编码设置为Windows 1255 但这没有被识别 我还
  • 无需画布/显示器即可拍摄隐形 WebRTC/视频照片

    我读了拍摄静态照片 https developer mozilla org en US docs Web API WebRTC API Taking still photos来自 MDN 的描述如何从网络摄像头捕获照片 使用视频元素和med
  • 从数组创建树并将父字段的表示形式更改为对象而不是 ID

    我堆满了琐碎的问题 但找不到解决方案 任何帮助将不胜感激 我有一个对象数组 id 1 title home parent null id 2 title about parent null id 3 title team parent 2
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 反转比例函数

    这对我来说很有趣 看下面的D3代码 var scale d3 scale linear domain 100 500 range 10 350 scale 100 Returns 10 scale 300 Returns 180 scale
  • 单击 html 中的按钮后如何从 javascript 函数写入文件

    我正在尝试编写真正基本的代码 在 html 文件上按下按钮后 通过 JavaScript 函数在本地写入 txt 文件 这不可能吗 我可以仅使用 javascript 文件写入文件 但在尝试同时使用两者时则不能
  • 如何将 Django 数据库中的模板标签解释/渲染为 HTML

    我正在尝试添加带有来自 Django 管理站点的图像的帖子 但安全 自动转义关闭过滤器无法解释 Django 的模板标签 My input and page look like 复制图像地址 给出http 127 0 0 1 8000 7B
  • 使用 jQuery 的 ajax 方法以 blob 形式检索图像

    我最近问了另一个 相关 问题 这导致了这个后续问题 提交数据而不是输入表单的文件 https stackoverflow com questions 17643142 submitting data instead of a file fo

随机推荐

  • VBA:复制时前面的零被删除

    我正在使用 VBA 创建 Excel 文件的副本 在该文件中 有一列包含前面带有零的数字 该文件的副本已创建 但该列中的数据将被删除 我需要保留前面带有零的值 我该如何用VBA解决这个问题 最好的方法是通过将 Range NumberFor
  • 带有泛型的映射数组的问题[重复]

    这个问题在这里已经有答案了 可能的重复 Java 泛型和数组初始化 https stackoverflow com questions 470198 java generics and array initialization 如何在 Ja
  • 代码在 g++ 中运行完美,但在 Xcode 中则不然 - 找不到文件

    我创建了一个包含内容的文本文件 它与 cpp 文件位于同一文件夹中 而且我已经多次确认该文件存在 当我运行 g 时 编译并运行它会找到该文件 当我在 Xcode 中运行它时 它不起作用 如果找不到该文件 include
  • int 和 NSInteger 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 何时使用 NSInteger 与 int https stackoverflow com questions 4445173 when to use nsinteger vs int 为什么会有 NS
  • 检查 .lib 文件的工具?

    我正在评估一些文档不足的软件 当我构建示例项目时 我收到一个链接器错误 如下所示 error LNK2019 unresolved external symbol 这个应用程序没有大量的 lib 文件 因此我可以通过反复试验来解决这个问题
  • 嵌入式非托管 DLL 无法在 ASP.NET 中加载

    我正在为 WCF 服务开发 ASP NET 主机 该服务引用 C CLI 包装器库 该库本身引用非托管 DLL 基于这个问题 https stackoverflow com questions 2907169 asp net load un
  • 亚音速 3.0.0.3 崩溃

    运行最新版本的 SubSonic 3 0 0 3 检索单个记录 更改一个字段并调用 Save 会导致以下代码中出现空引用异常 公共无效更新 IDataProvider提供者 if this dirtyColumns Count gt 0 r
  • 如何处理 next.js 路由中的尾部斜杠?

    我正在尝试设置 next js 应用程序 但在处理带有尾部斜杠的路由时遇到问题 因此 例如 如果我有这样的页面结构 pages index js blog index js slug js 然后去 给我基础index js 即将 blog给
  • msdeploy 上的嵌套虚拟目录已删除

    我的项目使用 msdeploy 将包发布到 IIS 它部署在项目的现有版本上 在Web应用程序中 我有一个虚拟目录 但每次部署项目时 虚拟目录都会消失 我通过以下方式调用 MSDepoly source package d 9 1 0 67
  • 将文件直接从 FTP 传输到 Azure 文件存储,无需将它们保存在本地内存或磁盘中

    我必须将文件从 FTP 传输到 Azure 文件存储 我的代码工作正常 但我正在内存中传输这些文件 这不是最佳实践 所以首先我将流读取到Byte内存中的数组 然后我将输出上传到 Azure 文件存储 现在我知道最好异步执行此操作 但我不知道
  • google.script.run 不返回字符串

    试图找出用于制作 Google 文档插件的 Google Apps 脚本 我有 Code gs function helloWorld return Hello World 在我调用的 code gs 下 侧边栏 html console
  • 播放时拔掉耳机会导致 iPhone 应用程序出现错误

    我正在创建一个基于的应用程序在这里说话示例应用程序 如果耳机已插入或默认通过扬声器播放 我希望音频通过耳机播放 我使用了底部的代码来实现这一点 并且除非在播放过程中拔掉耳机 否则它工作正常 此时播放结束 没关系 问题是 当我再次点击播放时
  • Dockerfile 还是注册表?哪种分配策略是首选?

    如果您使用 Dockerfile 制作服务 您是否更愿意使用 Dockerfile 构建镜像并将其推送到注册表 而不是分发 Dockerfile 和存储库 供人们构建镜像 哪些用例有利于 Dockerfile repo 分发 哪些用例有利于
  • 可嵌入的 jpa 类应该实现 equals 和 hashCode 吗?

    假设我有以下场景 Entity public class Person Id private Long id Surrogate key Embedded private Name name Natural key public int h
  • C++:平台相关类型 - 最佳模式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 JavaCV 从网络摄像头捕获和录制视频

    我是 JavaCV 新手 我很难找到关于我感兴趣的主题的不同问题的好教程 我已经成功地从我的网络摄像头实现了某种实时视频流 但问题是我使用我在网上找到的这段代码片段 Override public void run FrameGrabber
  • 如何设置 UIDatePickerModeCountDownTimer 的最大时间?

    我想问一下iOS倒计时最大时间怎么设置 例如最多1小时30分钟 倒数计时器是从UIDatePicker s mode Thanks EDIT 有人说我必须设置最小 最大日期 我只是在故事板中设置它们 但我没有看到任何区别 设置的时间是我当地
  • 通过 ssh 启动时 Docker 容器 mongod 错误

    我已经在 docker 容器上安装了 mongodb 并在 ubuntu 14 04 上安装了 openssh 容器正在使用 ssh 运行 但是当我 ssh 进入容器时 尝试启动 mongod 时出现以下错误 root 430f9502ba
  • 位置侦听器超时

    我当前正在使用计时器来确定位置监听器是否超时 问题是 GPS 仍然打开 我不知道为什么 当位置侦听器超时时 是否有一种可以重写的方法或更优雅的方法 考虑向您的位置管理器添加 GPS 状态侦听器 当 GPS 启动 停止 接收第一次定位或卫星状
  • Javascript - 在一页上复制多个文本区域的文本按钮

    我已经搜索过该网站的类似问题 但我仍然不知所措 基本上 我正在为一位即将离职的同事接手一个项目 他的 Intranet 页面计划应该有多个文本区域 每个文本区域都有自己的预定义文本和自己的 复制文本 按钮 单击时 它会复制到用户的剪贴板 我