原生 js 实现点击按钮复制文本

本文介绍了一种在网页上实现复制<i>标签内文本到剪切板的方法。通过创建并隐藏一个<textarea>元素,当用户点击按钮时,将<i>标签的文本内容赋值给<textarea>,然后使用document.execCommand('copy')命令完成复制操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:需要点击按钮,复制<i>标签中的内容到剪切板

1、浏览器提供了copy命令,可以复制选中的内容

document.execCommand("copy")

如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用  copy 命令,将文本复制到剪切板

但是 select() 方法只对 <input> 和 <textarea> 有效,对于 <i> 就不好使

最后我的解决方案是,在页面中添加一个 <textarea>,然后把它隐藏掉

点击按钮的时候,先把 <textarea> 的 value 改为 <i> 的 innerText,然后复制 <textarea> 中的内容

html:

<style>
    .copy{
        display:inline-block;
    }
    #hide-input{
        position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;
    }
    .copy-btn{
        width:20px;
        height:20px;
        cursor:pointer;
    }
    .substring-id{
        overflow: hidden;
        text-overflow:ellipsis;
        white-space: nowrap;
        width:120px;
        display:inline-block;
        cursor:pointer;
    }
</style>
<div class="copy">
    <i class="substring-id" title="文本内容文本内容文本内容">文本内容文本内容文本内容</i>
    <textarea id="hide-input"></textarea>
    <button onclick="clickCopy()" class="copy-btn">复制</button>
</div>

js:

<script>
function clickCopy(){
    var input = document.getElementById("hide-input");
    var text = document.getElementByClassName("substring-id").innerText;
    input.value = text;
    input.select();
    document.execCommand("copy");
    alert('复制成功')
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值