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

如何实现点击按钮时克隆id为box的div元素并添加到其旁

实现点击复制元素并添加到相邻位置的功能

需求

点击按钮时,复制ID为box的div元素,并将其添加到原元素的相邻位置,每次点击都执行该操作。

完整实现代码

<!DOCTYPE html>
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>

<div style="width: 18rem;" class="card" id="box">
    <div class="card-body">
        <h5 class="card-title" id="Cat1"></h5>
        <p class="card-text">No Products Created</p>
        <a href="#" class="btn btn-primary">+</a>
    </div>
</div>

<button onclick="addItem()">Click Me!</button>
  
<script>
    let cloneCounter = 1;
    function addItem() {
        // 获取目标元素
        const original = document.getElementById('box');
        // 深复制元素(包含所有子元素)
        const clone = original.cloneNode(true);
        
        // 更新复制元素的ID,避免重复
        cloneCounter++;
        clone.id = `box-${cloneCounter}`;
        // 更新内部标题的ID
        const cloneTitle = clone.querySelector('.card-title');
        cloneTitle.id = `Cat${cloneCounter}`;
        
        // 将复制元素插入到原元素的紧邻后方
        original.insertAdjacentElement('afterend', clone);
    }
</script>
 
</body>
</html>

关键说明

  • 深复制元素:使用cloneNode(true)而非cloneNode(false),这样能完整复制原元素的所有子节点和内容,确保复制后的卡片和原卡片结构一致。
  • 避免ID冲突:HTML中ID必须唯一,所以给复制后的元素及其内部标题设置递增的ID,防止出现重复ID导致的问题。
  • 插入位置:insertAdjacentElement('afterend', clone)方法直接将复制元素放在原元素的相邻后方,满足需求中的“添加到原元素的相邻位置”要求。

内容的提问来源于stack exchange,提问作者Kartikeya Chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:06:05