我嘗試做一個遞歸函數,但是一個重要的變量(其他人也被)在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