我正在处理一个新项目;就像在javaScript中的模板系统。 所以,这是我的一点代码:for each仅执行数组的最后一个元素
var Tree = (function (_Obj) {
var _E,
_N;
_Obj.forEach (function (e) {
_E = document.createDocumentFragment();
if ("tagName" in e) {
_N = document.createElement(e.tagName);
}
if ("childNode" in e) {
_N.appendChild(Tree (e.childNode));
}
});
_E.appendChild (_N);
return _E;
});
这里该函数的参数:
Fragment = [{ // firstNode
"tagName" : "div",
"childNode" : [{
"tagName" : "p",
"childNode" : [{
"tagName" : "string",
"childNode" : [{
"tagName" : "span",
}]
}]
}]
},
{ //secondNode
"tagName" : "div",
"childNode" : [{
"tagName" : "p",
"childNode" : [{
"tagName" : "span",
"childNode" : [{
"tagName" : "div"
}]
}]
}]
}
];
好;这段代码应该返回一个带有var Fragment的EVERY对象的文档片段;如果你看,JSON基于tagName和childNode元素;对于每个对象都依赖一个tagName,所以该函数返回一个具有相同名称的新元素。
但是这里出了问题;该函数只返回了var片段的第二个节点:
#document-fragment
|_<div>
|_<p>
|_<span>
<div></div>
</span>
</p>
</div>
那这等于:
{
"tagName" : "div",
"childNode" : [{
"tagName" : "p",
"childNode" : [{
"tagName" : "span",
"childNode" : [{
"tagName" : "div"
}]
}]
}]
}
但是,什么与第一节点happend?
感谢您的高级:)
PD:对不起,我来自阿根廷。
+1用于解释发生了什么问题。 – jfriend00 2012-08-15 06:01:23