Javascript 如何删除除第一个元素之外的所有子元素?
这是一个21点游戏。我有一个容器,其中第一个子元素是用于克隆卡的模板。如何删除除第一个元素之外的所有子元素?我认为当前的代码即“clearContainer”方法删除了所有子元素Javascript 如何删除除第一个元素之外的所有子元素?,javascript,Javascript,这是一个21点游戏。我有一个容器,其中第一个子元素是用于克隆卡的模板。如何删除除第一个元素之外的所有子元素?我认为当前的代码即“clearContainer”方法删除了所有子元素 函数makeCardPlayer(){ //.card是在模板card css类中创建的 var card=$(“.card.templatePlayer”).clone(); //card.removeClass(“templatePlayer”); 卡。添加类(“新卡”); $(“#cardContainerPl
函数makeCardPlayer(){
//.card是在模板card css类中创建的
var card=$(“.card.templatePlayer”).clone();
//card.removeClass(“templatePlayer”);
卡。添加类(“新卡”);
$(“#cardContainerPlayer”)。附加(卡片);
}
函数clearContainer(){
调试器
//$(“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{
显示器:flex;
柔性包装:包装;
}
.卡片{
显示:内联块;
垂直对齐:顶部;
文本对齐:居中;
保证金:5px;
填充:10px;
宽度:70px;
高度:100px;
字号:26px;
背景色:黑色;
边框:实心1px黑色;
颜色:白色;
边界半径:10px;
}
纽卡先生{
显示:内联块;
垂直对齐:顶部;
文本对齐:居中;
保证金:5px;
填充:10px;
宽度:70px;
高度:100px;
字号:26px;
背景颜色:黄色;
边框:实心1px黑色;
颜色:白色;
边界半径:10px;
}
templatePlayer{
/*显示:无*/
}
您似乎在clearContainer
中避免使用jQuery。如果你想使用这个功能,那么
function clearContainer() {
$("#cardContainerPlayer > *").slice(1).remove();
}
它选择容器的所有子元素,并用于仅获取第一个元素之后的一组元素,然后删除它们
如果要直接使用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);
}
}
或者您可以使用firstElementChild
、nextElementSibling
和lastElementChild
,具体取决于您要执行的操作以及是否需要处理其中的文本节点。有关这些不同属性的详细信息,请参见。您应该使用nextSibling()方法查找并删除第一个子级的每个同级:
function clearContainer() {
debugger
var myNode = document.getElementById("cardContainerPlayer");
var fc = myNode.firstChild;
while (fc.nextSibling) {
myNode.removeChild(fc.nextSibling);
}
}
在clearContainer()
方法中,您可以使用如下内容
function clearContainer() {
debugger
var myNode = document.getElementById("cardContainerPlayer");
var fc = myNode.firstChild;
while (fc.nextSibling) {
myNode.removeChild(fc.nextSibling);
}
}
通过删除子代的下一个兄弟,最后只剩下第一个子代。您包括了jQuery,但没有太多使用它。你为什么不在clearContainer中使用它?它不起作用。它能清除一切。谢谢。我尝试了Jquery方法,但不起作用,但纯JS方法效果很好。@Steve-Jquery版本缺少一个
--已修复。:-)