2017-09-27 14 views
1

私は初心者です。私は次のように書いた、DOM内のすべての要素を参照し、その名前を印刷するにはJavaScriptを使用したい:javascriptのプログラム再帰

function getNumber(parent){ 
       var entiredoc = parent; 
       var docnodes = entiredoc.childNodes; 
       return docnodes.length; 
      } 
function browAllDom(parent){ 
     if(parent!=null){ 
      for(i = 0; i < getNumber(parent); i++){ 
        alert(parent.nodeName); 
        return browAllDom(parent.childNodes[i]); 
      } 
     } 
} 

私はデバッグするとき、それは木のDOMと終了に葉を閲覧します。私はforループをすべてブラウズしなければならないと思います。

問題はどこですか?そしてどうすれば修正できますか?

+1

'return browAllDom(parent.childNodes [i]);' ...ループがたかだか1回だけ実行されることを意味します...戻り値は、囲む関数の外に戻ります –

+1

簡単な方法は 'parent.getElementsByTagName ( '*') 'は、' parent'のすべての要素の平坦化されたオブジェクトを返します。 – Teemu

答えて

1

次のコードは一度だけ実行されます:

for(i = 0; i < getNumber(parent); i++){ 
    (parent.nodeName); 
    return browAllDom(parent.childNodes[i]); 
} 

あなたがのためにループから戻ってきているので、このコードは一度だけ実行されます。

代わりに、forループの外側に戻り値を書き込む必要があります。

これをご覧くださいanswerあなたはより良い理解を持つでしょう。