JS实现一键复制文本
背景#
实现对table中的某一列文本内容进行复制
代码#
需求:表格中只有"姓名"列可以复制,其他列不能复制
<template>
<div class="app">
<h1>App Page</h1>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="日期" width="180"> </el-table-column>
<el-table-column prop="name" label="姓名" width="180" class-name="can-select">
</el-table-column>
<el-table-column prop="address" label="地址"> </el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
date: "2016-05-02",
name: "小明",
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "小红",
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "张三",
address: "上海市普陀区金沙江路 1516 弄",
},
],
};
},
mounted() {
const table = document.querySelector(".el-table__body-wrapper");
const allNames = this.tableData.map((item) => item.name);
table.onmouseup = async () => {
const selection = window.getSelection().toString();
if (!selection) return;
console.log(selection);
const selectionArr = selection.split(/\n/);
const result = [];
selectionArr.forEach((s) => {
if (allNames.includes(s)) {
result.push(s);
}
});
const copyContent = result.join(",");
await navigator.clipboard.writeText(copyContent);
this.$notify({
title: "成功",
message: "姓名复制成功",
type: "success",
});
};
},
};
</script>
<style lang="less" scoped>
/deep/.el-table__body-wrapper {
user-select: none;
}
/deep/.can-select .cell {
user-select: text;
}
</style>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2022-12-15 element-ui表格组件的封装(2)