2011-07-08 54 views
2

嘗試下面的函數轉換的CoffeeScript:轉換每個循環到CoffeeScript的

var parse = function (elem) { 
     for each(var subelem in elem) { 
      if (subelem.name() !== null) { 
       console.log(subelem.name()); 
       if (subelem.children().length() > 0) { 
        parse(subelem); 
       } 
      } else { 
       console.log(subelem); 
      } 
     } 
    }; 
    var xml = new XML(content); 
    parse(xml); 

它只是打印元素標記和任何文本控制檯。

嘗試使用:

parse = (elem) -> 
     if elem.name()?     
      console.log elem.name() 
      if elem.children().length() > 0 
       parse subelem for own elkey, subelem of elem 
     else 
      console.log elem 

xml = new XML content 
parse subelem for own elkey, subelem of xml 

但它似乎從來根XML節點下解析什麼,在一個無限遞歸循環結束了連續打印出根節點的標籤,直到它炸燬。任何關於我在做什麼的想法都是錯誤的?謝謝。

回答

3

嗯。我對此進行了測試,如果您放棄own關鍵字,則該問題似乎會消失,該關鍵字會添加hasOwnProperty檢查。不知何故,每個元素的第一個孩子似乎通過了這個檢查,而其他人則失敗了。我有點迷惑,但你的答案是。