尝试将以下功能转换为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节点下的任何内容,最终会在无限递归循环中连续打印出根节点标记,直到它爆炸为止。关于我做错了什么的任何想法?感谢。
答案 0 :(得分:3)
嗯。我对此进行了测试,如果您放弃own
关键字,这会增加hasOwnProperty
检查,问题就会消失。不知何故,每个元素的第一个孩子似乎通过了那个检查,而其他人则失败了。我对此有点不知所措,但有你的答案。