これは私のコードです:
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
ます。ご覧のとおり、JSON は atagName
およびchildNode
要素に基づいています。各オブジェクトは one に依存するtagName
ため、関数は同じ名前の新しい要素を 1 つ返します。
しかし、ここで何か問題が発生します。関数は次の の 2 番目のノードのみを返しますFragment
。
#document-fragment
|_<div>
|_<p>
|_<span>
<div></div>
</span>
</p>
</div>
これが次と等しいこと:
{
"tagName" : "div",
"childNode" : [{
"tagName" : "p",
"childNode" : [{
"tagName" : "span",
"childNode" : [{
"tagName" : "div"
}]
}]
}]
}
しかし、FIRST NODE はどうしたのでしょうか。