[英]My recursive function not properly remove all children
此代碼刪除所有容器的子代,並設置每個子代= null以釋放內存。 myElement的結構並不總是相同的,所以我想要一個動態的東西。
var cont1 = myElement.children.length;
for(var i = cont1 - 1 ; i >= 0 ; i--){
var cont2 = myElement.children[i].children.length;
for (var j = cont2 - 1; j >= 0; j--) {
var cont3 = myElement.children[i].children[j].children.length;
for (var k = cont3 - 1; k >= 0; k--) {
var cont4 = myElement.children[i].children[j].children[k].children.length;
for (var w = cont4 - 1; w >= 0; w--) {
myElement.children[i].children[j].children[k].remove(myElement.children[i].children[j].children[k].children[w]);
myElement.children[i].children[j].children[k].children[w] = null;
}
myElement.children[i].children[j].remove(myElement.children[i].children[j].children[k]);
myElement.children[i].children[j].children[k] = null;
}
myElement.children[i].remove(myElement.children[i].children[j]);
myElement.children[i].children[j] = null;
}
myElement.remove(myElement.children[i]); //i loop
myElement.children[i] = null; //i loop
}
這是我的遞歸測試功能。 似乎只能部分工作。 第一層未刪除,它將是舊代碼的i循環。 我如何也可以刪除該級別的孩子?
function deleteRecursive(element){
if(element.children.length > 0){
for(var i = element.children.length - 1 ; i >= 0 ; i--){
if(element.children[i].children.length > 0){
deleteRecursive(element.children[i]);
}else{
element.remove(element.children[i]);
element.children[i] = null;
}
}
}
}
從遞歸調用返回后,還應該調用remove
。
注意:第一if
是沒有必要的,因為這種情況下是由已被選中for
循環。 並且您可以刪除遞歸調用函數之前所做的類似檢查,因為遞歸調用將再次在其for
循環中對其for
檢查:
function deleteRecursive(element){
for(var i = element.children.length - 1 ; i >= 0 ; i--){
deleteRecursive(element.children[i]);
element.remove(element.children[i]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.