我有一个包含各种列的表,我希望用户能够通过单击它来复制单元格中的文本.这是动态内容,所以我不知道当时的ID或类是什么.

这对我来说是可行的,但由于getElementById的原因,它显然不起作用.我该怎么做才能让副本适用于用户点击的单元格?

function copyAddress() {
    /* Get the text field */
    var copyText = document.getElementById("address");

    /* Select the text field */
    copyText.select();
    copyText.setSelectionRange(0, 99999); /* For mobile devices */

    /* Copy the text inside the text field */
    navigator.clipboard.writeText(copyText.value);
}

推荐答案

嗨,如果你想复制动态表上的文本,你需要先 Select 元素.由于您不确定class/id是什么,所以只需 Select html元素即可

假设我有这个表,我想 Select td中的所有内部文本

  <table >
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
</table>

你可以在javascript上做的就是

让内容=文档.querySelectorAll('table tr td');//所有td都将被选中并添加到 node 列表中

之后,您需要将 node 列表转换为array.

让contentArr=Array.from(content)//可以使用array.从…起

然后循环浏览所有元素, for each 元素添加一个事件侦听器(单击),然后获取innerText并将其复制到剪贴板.你可以在这里查Hope it helps

contentArr.forEach((element) => {
  element.addEventListener("click", (e) => {
    let copyText = e.target.innerText
    navigator.clipboard.writeText(copyText);
  });
});

编辑:我在其中一条 comments 中看到,这就是你检测点击的方式

如果是这样的话,onclick函数是否会自动添加到您想要 Select 的div上?如果是

你能做的就是

<div onclick="copyAddress(this)">在函数中添加此关键字

现在你可以在javascript上做的是

function copyAddress(e) {
 navigator.clipboard.writeText(e.innerText); // the e is the current element and just get the innerText and copy it to clipboard.
}

编辑:

如果这是你的格式

<div onclick="copyAddress(this)"><textarea>text to copy</textarea></div>

function copyAddress(e) {
  const copyText = e.firstChild;
  copyText.select();
  copyText.setSelectionRange(0, 99999);
  navigator.clipboard.writeText(copyText.value);

}

Javascript相关问答推荐

CSS背景过滤器忽略转换持续时间(ReactJS)

如何解决(不忽略)reaction详尽的linter规则,而不会在获取数据时导致无限的reender循环

如何在NightWatch.js测试中允许浏览器权限?

如何使用Echart 5.5.0创建箱形图

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

Klaro与Angular的集成

当在select中 Select 选项时,我必须禁用不匹配的 Select

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

我们如何从一个行动中分派行动

当点击注册页面上的注册按钮时,邮箱重复

WebGL 2.0无符号整数输入变量

如何从URL获取令牌?

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

为什么客户端没有收到来自服务器的响应消息?

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

传递方法VS泛型对象VS事件特定对象

警告框不显示包含HTML输入字段的总和

OnClick更改Json数组JSX中的图像源

如何根据输入数量正确显示alert ?

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?