You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在列表项旁添加复制到剪贴板按钮?(HTML/JavaScript)

实现每个结果项的复制到剪贴板功能

你可以通过以下步骤给每个结果项添加复制按钮:

1. 修改HTML结构

在循环生成的<li>元素里添加复制按钮,把要复制的链接通过data-url属性存储起来,方便后续JS调用:

<form action="/" method="post">
    <input name="input" placeholder="Shorten a link here..."/>
    <button class="shorten-btn" type="submit">Shorten It!</button>
</form>
<ul class="results">
    <% for (let i=0; i<results.length; i++) { %>
        <li>
            <span class="result-url"><%= results[i] %></span>
            <button class="copy-btn" data-url="<%= results[i] %>">复制</button>
        </li>
    <% } %>
 </ul>

2. 添加JavaScript复制逻辑

使用浏览器原生的Clipboard.writeText() API实现复制功能,同时添加复制成功的反馈提示:

document.addEventListener('DOMContentLoaded', function() {
    const copyButtons = document.querySelectorAll('.copy-btn');
    
    copyButtons.forEach(btn => {
        btn.addEventListener('click', function() {
            const url = this.getAttribute('data-url');
            
            navigator.clipboard.writeText(url).then(() => {
                // 临时修改按钮文字提示成功
                const originalText = this.textContent;
                this.textContent = '已复制';
                
                // 2秒后恢复原文字
                setTimeout(() => {
                    this.textContent = originalText;
                }, 2000);
            }).catch(err => {
                console.error('复制失败:', err);
                alert('复制失败,请手动复制链接');
            });
        });
    });
});

功能说明

  • data-url属性:直接存储当前要复制的链接,比从DOM文本中提取更可靠,逻辑更清晰。
  • Clipboard.writeText():现代浏览器原生支持的剪贴板API,相比旧的document.execCommand('copy')更安全、兼容性更好。
  • 反馈提示:复制成功后修改按钮文字并自动恢复,让用户直观知道操作结果。

内容的提问来源于stack exchange,提问作者George Garman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:55:19