将每个循环转换为Coffeescript

时间:2011-07-08 16:18:14

标签: javascript xml 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节点下的任何内容,最终会在无限递归循环中连续打印出根节点标记,直到它爆炸为止。关于我做错了什么的任何想法?感谢。

1 个答案:

答案 0 :(得分:3)

嗯。我对此进行了测试,如果您放弃own关键字,这会增加hasOwnProperty检查,问题就会消失。不知何故,每个元素的第一个孩子似乎通过了那个检查,而其他人则失败了。我对此有点不知所措,但有你的答案。