我尝试做一个递归函数,但是一个重要的变量(其他人也被)在for(){}
循环之前被递归调用所取代。我想要的变量本地(私人,只为当前的功能,并没有通过递归调用overrided)...我已经尝试了很多东西...任何想法?调用递归函数并保持本地变量
function parseChilds(elements, desired, array){
if(!isArray(elements)){
if(elements instanceof NodeList){
elements = objectToArray(elements);
}
else {
elements = [elements];
};
};
for(var el = 0; el < elements.length; el++){
console.log("EL", elements[el], desired);
if(elements[el].tagName.toLowerCase() === desired.tag[0] && desired.tag.length === 1){
array.push(elements[el]);
};
if(elements[el].nodeType === 1){
var childrens = elements[el].children;
if(childrens.length > 0 && desired.tag.length > 1){
desired.tag = arrayRemoveFirst(desired.tag);
for(var child = 0; child < childrens.length; child++ ){
if(childrens[child].nodeType === 1){
parseChilds(childrens[child], desired, array);
};
};
};
};
};
};
THX,J.
编辑:的desired.tag
是在for循环EL = 1之前的递归调用overrided ...
也许你能告诉我们哪些变量,这样我们就不必搜索它的代码;) – Asped
你的问题不明确。 'desired'被传递给你的递归调用。你可以在递归调用中做任何你想要的东西,只要传递任何你想传入的东西。 – jfriend00
@Asped 我试试: var el = 0; while(elements [el]){ ... ... el ++; }; 但这并没有改变任何东西。 – Jordan