2017-09-27 102 views
1

我是一名JavaScript初學者。我想用JavaScript來瀏覽DOM中的所有元素並打印它的名字,我寫了下面: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

一個簡單的方法是使用'parent.getElementsByTagName ('*')',它返回'parent'中所有元素的扁平對象。 – Teemu

回答

1

下面的代碼將只運行一個單一的時間:因爲你是從返回的循環

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

此代碼將只運行一次。

相反,您應該在for循環之外編寫返回值。

看看這個answer。你會有更好的理解。