gpt4 book ai didi

javascript - 如何删除除第一个元素之外的所有子元素?

转载 作者:行者123 更新时间:2023-11-30 11:05:09 25 4
gpt4 key购买 nike

这是一个二十一点游戏。我有一个容器,其中第一个子元素是用于克隆卡片目的的模板。如何删除除第一个元素之外的所有子元素?我认为当前代码是“clearContainer”方法,删除了所有子元素。

function makeCardPlayer() {
// .card is created in the template card css class
var card = $(".card.templatePlayer").clone();

//card.removeClass("templatePlayer");
card.addClass("newCard");
$("#cardContainerPlayer").append(card);
}

function clearContainer() {
debugger
//$("cardContainerPlayer > *").slice(1).remove();

var myNode = document.getElementById("cardContainerPlayer");
var fc = myNode.firstChild;
var sib = fc && fc.nextSibling;
while (myNode.lastChild && myNode.lastChild !== sib) {
myNode.removeChild(myNode.lastChild);
}
}

makeCardPlayer();
clearContainer();
#cardContainerPlayer {
display: flex;
flex-wrap: wrap;
}

.card {
display: inline-block;
vertical-align: top;
text-align: center;
margin: 5px;
padding: 10px;
width: 70px;
height: 100px;
font-size: 26px;
background-color: black;
border: solid 1px black;
color: white;
border-radius: 10px;
}

.newCard {
display: inline-block;
vertical-align: top;
text-align: center;
margin: 5px;
padding: 10px;
width: 70px;
height: 100px;
font-size: 26px;
background-color: yellow;
border: solid 1px black;
color: white;
border-radius: 10px;
}

.templatePlayer {
/*display: none;*/
}
<!DOCTYPE html>
<html>

<body>
<div id="cardContainerPlayer">
<div class="card templatePlayer">
<span class="playerCardFace"></span>
<span class="playerCardSuit"></span>
</div>
</div>
</body>

</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

以下是我为简洁起见删除了额外代码的代码。

最佳答案

您似乎在 clearContainer 中避免使用 jQuery。如果你想使用它的那个功能,那么

function clearContainer() {
$("#cardContainerPlayer > *").slice(1).remove();
}

选择容器的所有子元素并使用 slice只获取第一个之后的一组,然后删除它们。

如果你想直接使用 DOM:

function clearContainer() {
var myNode = document.getElementById("cardContainerPlayer");
var fc = myNode.firstChild;
var sib = fc && fc.nextSibling;
while (myNode.lastChild && myNode.lastChild !== sib) {
myNode.removeChild(myNode.lastChild);
}
}

或者您可以使用firstElementChildnextElementSiblinglastElementChild,这取决于您要做什么以及是否需要处理文本节点在那里。更多关于这些不同属性的信息,请参阅 MDN's DOM documentation .

关于javascript - 如何删除除第一个元素之外的所有子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55970625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com