我試圖從 splide 物件串列中挑選出串列的最后一個元素( elementA )和特定元素(索引為 -1, elementB )。我想將 elementB 的子元素與 elementA 的子元素(相同的類名)交換。不幸的是,這不起作用,因為每次洗掉 elementA 的子元素時,我都找不到原因。它已正確插入 elementB ,但不再位于 elementA 的 DOM 中。
下面是代碼:
const elementA = splide.Components.Slides.getAt(lastIndex);
const elementB = splide.Components.Slides.filter(slide => slide.index === -1);
const elementAContent= elementA[0].slide.querySelector('.element-container');
const elementBContent= elementB[0].slide.querySelector('.element-container');
const elementAToBeCloned = elementAContent.querySelector('.clone-element');
elementBContent.removeChild(elementBContent.firstElementChild);
elementBContent.insertBefore(elementAToBeCloned, elementBContent.firstElementChild);
//doing so results in elementAToBeCloned to be lost within elementAContent
我也嘗試用 .cloneNode(true) 或 replaceChild 做一些事情,但不幸的是行為總是一樣的。
uj5u.com熱心網友回復:
您實際上并沒有克隆任何東西 - 您只是insertBefore對現有元素執行了一個命令,因此該元素被移動了。您需要呼叫.cloneNode()克隆元素,并且需要在將克隆節點放置在 DOM 中的某個位置之前執行此操作。
const elementToClone = document.querySelector("div");
document.querySelector("button").addEventListener("click", function(evt){
// Insert a newly cloned node at the end of the <body>
document.body.insertBefore(elementToClone.cloneNode(true),document.body.lastChild);
});
<div>Foo Bar</div>
<button type="button">Clone</button>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472192.html
標籤:javascript html dom 幻灯片
上一篇:打字稿-使用獲取的資料和材料-ui時“沒有多載匹配此呼叫”
下一篇:石頭剪刀布:第一輪得分保持在0
