尝试将以下函数转换为 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/