我已经多次尝试重构这个使用迭代而不是递归,但我不能换我的头周围。也许它与循环内发生的递归有关。援助,即使只是伪代码,将不胜感激。重构递归函数
var getElementAndDescendants = function (el) {
var docFrag = document.createDocumentFragment();
var children = el.parentElement.querySelectorAll("tr[data-parentid='" + el.getAttribute("data-myid") + "']");
docFrag.appendChild(el);
var len = children.length;
for (var index = 0; index < len; index++) {
docFrag.appendChild(getElementAndDescendants(children[index]));
}
return docFrag;
};
更新:这只是一小部分,试图以按做出来TR的有孩子TR的在同一个表的DOM伪树更大的功能。每个孩子都可以有自己的孩子。该解决方案最终成为递归函数,其中包含您在此处看到的递归函数。因此,为什么我在微观优化之后(如果有的话)。我试图保持简单的问题,从而消除了外部功能。
你为什么要重构这段代码? – zzzzBov
'我试过多次重构这个来使用迭代而不是递归'为什么?你想通过这样做解决什么问题?此外,如果您包含了代码应该执行的操作的描述,则可以改进您的问题。 –
您正在尝试将自然递归函数更改为迭代版本。这是一个困难且容易出错的过程。你确定要做这个转换吗?它不会让代码变得更快或者更快。 – acomar