-1

再帰関数を作成しようとしましたが、重要な変数の 1 つ (他のものも) は、for(){}ループの前に再帰呼び出しに置き換えられます。ローカル変数が必要です(プライベート、現在の関数のみで、再帰呼び出しによってオーバーライドされません)...私は多くのことを試しました...何か考えはありますか?

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.

編集: for ループのdesired.tagel = 1 の前の再帰呼び出しによってオーバーライドされます...

4

1 に答える 1