javascript - 如何将 div 克隆放在原始 div 的正下方?

标签 javascript html duplicates clone

我目前有一个“添加更多”按钮,单击该按钮会复制我拥有的 div。目前的问题是,当单击按钮并且 div 重复时,它会出现在“添加更多”按钮下方。我希望 div 在单击时复制到原始 div 的正下方,这也意味着重复项将位于“添加更多”按钮上方。我该如何去做呢?

HTML

                    <!-- Instrument Exp. -->
                    <div>
                        <label>What instruments and level do you want to teach?</label>
                        <div class="form-inline justify-content-center" id="ins_1">
                            <!-- Instrument 1 -->
                            <div>
                                <select class="form-control ins">
                                    <option>Instrument</option>
                                    <option>Cello</option>
                                    <option>Clarinet</option>
                                    <option>Drums</option>
                                    <option>Flute</option>
                                    <option>Guitar</option>
                                    <option>Piano</option>
                                    <option>Saxophone</option>
                                    <option>Violin</option>
                                    <option>Vocal</option>
                                    <option>Trumpet</option>
                                </select>
                            </div>

                            <!-- Level 1 -->
                            <div>
                                <select class="form-control lvl">
                                    <option>Level</option>
                                    <option>Beginner</option>
                                    <option>Advanced</option>
                                    <option>Intermediate</option>
                                </select>
                            </div>
                        </div>


                    <!-- Add More -->
                    <div class="text-center" id="add_more">
                        <button type="button" class="no_link" onclick="add_instrument()">Add more +</button>
                    </div>
            </div>

JavaScript

var i = 0;
var original = document.getElementById('ins_1');

function add_instrument() {
    var clone = original.cloneNode(true);
    clone.id = "ins_1" + ++i;
    original.parentNode.appendChild(clone);
}

最佳答案

参见插入之前,https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore 。如果将其与 nextSibling 结合使用,则可以将其添加到紧随其后的位置:

var i = 0;
var original = document.getElementById('ins_1');
function add_instrument() {
    var clone = original.cloneNode(true);
    clone.id = "ins_1" + ++i;
    original.parentNode.insertBefore(clone, original.nextSibling);
}

另请参阅:How to insert an element after another element in JavaScript without using a library?

编辑:正如@Tej在评论中指出的那样,有一些很好的函数可以相邻插入节点:insertAdjacentHTML ,和insertAdjacentElementinsertAdjacentElement 需要 IE8+ 或最新的浏览器。

在我看来,使用这些函数代码变得更具可读性:

var i = 0;
var original = document.getElementById('ins_1');
function add_instrument() {
    var clone = original.cloneNode(true);
    clone.id = "ins_1" + ++i;
    original.insertAdjacentElement('afterend', clone);
}

关于javascript - 如何将 div 克隆放在原始 div 的正下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50521461/

相关文章:

javascript - Angular 函数结果未显示在 DOM 中

javascript - jQuery 将元素的类保存在静态变量中并重用

html - 没有固定大小的容器中的垂直和水平居中文本在 Firefox 中表现得很奇怪

mysql - 表行到mysql中的列

python - 在 PostgreSQL 中检查 python 数组(或 csv)是否有重复项,在相邻的列中显示状态

javascript - 在 for 循环 : variable scope miscomprehension 内绑定(bind)监听器

Javascript:从购物车中减去商品会导致负值

html - 如何在html页面中调用onkeypress事件(Delphi)

html - div 内的文本和图像顶部对齐

java - 用于删除字符串数组中重复项的内置方法