通过javascript删除父级的子级

通过javascript删除父级的子级,javascript,Javascript,我在NodeJS中制作了一个聊天应用程序,在其中动态加载每个用户的消息。当用户的名字被点击时,他们的消息将同时被检索。但我想做的是,当我检索一个用户的消息并尝试检索第二个或第三个用户的消息时,我想删除已经检索到的消息。这是父div元素的子元素,它的类名为(“indChatBody”),每个消息都是这个类的子元素,我只是通过javascript动态生成这些子元素,这就是为什么我想用javascript删除这些子元素 我尝试的代码是: var chatBody=document.getElemen

我在NodeJS中制作了一个聊天应用程序,在其中动态加载每个用户的消息。当用户的名字被点击时,他们的消息将同时被检索。但我想做的是,当我检索一个用户的消息并尝试检索第二个或第三个用户的消息时,我想删除已经检索到的消息。这是父div元素的子元素,它的类名为
(“indChatBody”)
,每个消息都是这个类的子元素,我只是通过javascript动态生成这些子元素,这就是为什么我想用javascript删除这些子元素

我尝试的代码是:

var chatBody=document.getElementsByClassName(“indChatBody”)[0]
var ch=document.getElementsByClassName(“mess”);
var len=chatBody.children.length;

对于(var i=0;i您正在从0循环到数组的原始长度。但每次循环时,您都将从该数组中删除一个元素。在某个点上,您超出了索引

您可以组合while循环element.hasChildNodes()并删除第一个子元素,直到不再有子元素,而不是使用数组并在其长度上存在潜在问题:

var chatBody=document.getElementsByClassName(“indChatBody”)[0]
while(chatBody.hasChildNodes()){
chatBody.removeChild(chatBody.firstChild);
}

信息#1
信息#2
信息#3

您正在从0循环到数组的原始长度。但每次循环时,您都会从此数组中删除一个元素。在某些情况下,您的索引不足

您可以组合while循环element.hasChildNodes()并删除第一个子元素,直到不再有子元素,而不是使用数组并在其长度上存在潜在问题:

var chatBody=document.getElementsByClassName(“indChatBody”)[0]
while(chatBody.hasChildNodes()){
chatBody.removeChild(chatBody.firstChild);
}

信息#1
信息#2
信息#3

ch不是数组而是列表,这意味着当您删除一个元素时,它也会从列表中删除。 因此,您可以通过删除来更改列表的长度。 你不需要长度

 while(ch[0]){
    chatBody.removeChild(ch[0]);
 }

ch不是数组而是列表,这意味着当您删除一个元素时,它也会从列表中删除。 因此,您可以通过删除来更改列表的长度。 你不需要长度

 while(ch[0]){
    chatBody.removeChild(ch[0]);
 }

另一个经典解决方案的可能重复是使用反向循环。另一个经典解决方案是使用反向循环。