javascript - 将 foreach 循环转换为 Coffeescript

标签 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 节点下的任何内容,并最终陷入无限递归循环中,不断打印出根节点标记,直到它爆炸。关于我做错了什么有什么想法吗?谢谢。

最佳答案

嗯。我对此进行了测试,如果您删除 own 关键字(这会添加 hasOwnProperty 检查),问题似乎就会消失。不知何故,每个元素的第一个子元素似乎通过了该检查,而其他元素则未能通过。我对此有点困惑,但这就是你的答案。

关于javascript - 将 foreach 循环转换为 Coffeescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627357/

相关文章:

javascript - Kendo UI,数据网格插入行多次产生请求

javascript - vanilla javascript 前缀以 css 选择器开头

java - 在 Java 中处理大文件 - XML 或序列化文件,哪个更好?

java - FragmentTabHost 添加带有图像和 TextView 的选项卡

javascript - 无法使用 javascript 将 XML 文件中的文本获取到变量中

jquery - CoffeeScript 在更改和加载时动态选择表单字段

javascript - BackboneJS渲染问题

jquery - 如何阻止远程表单提交?

javascript - 使用 Javascript 获取页面中的顶部节点

javascript - 使用 JavaScript 查找最大变量