Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除除第一个元素之外的所有子元素?_Javascript - Fatal编程技术网

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

Javascript 如何删除除第一个元素之外的所有子元素?,javascript,Javascript,这是一个21点游戏。我有一个容器,其中第一个子元素是用于克隆卡的模板。如何删除除第一个元素之外的所有子元素?我认为当前的代码即“clearContainer”方法删除了所有子元素 函数makeCardPlayer(){ //.card是在模板card css类中创建的 var card=$(“.card.templatePlayer”).clone(); //card.removeClass(“templatePlayer”); 卡。添加类(“新卡”); $(“#cardContainerPl

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

函数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版本缺少一个
--已修复。:-)