2011-07-08 56 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检查。不知何故,每个元素的第一个孩子似乎通过了这个检查,而其他人则失败了。我有点迷惑,但你的答案是。