2012-08-15 9 views
0

새로운 프로젝트를 진행하고 있습니다. javaScript의 템플릿 시스템과 같은 것입니다. 여기forEach는 배열의 마지막 요소 만 실행합니다.

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은 tagName과 childNode 요소를 기반으로합니다. 각 객체가 하나의 tagName에 종속되므로 함수는 동일한 이름의 새 요소를 하나 반환합니다.

하지만 뭔가 잘못되었습니다. 첫 번째 노드에 무슨 일이 생긴 무슨

{ 
    "tagName" : "div", 
    "childNode" : [{ 
     "tagName" : "p", 
     "childNode" : [{ 
     "tagName" : "span", 
     "childNode" : [{ 
      "tagName" : "div" 
     }] 
     }] 
    }] 
    } 

그러나,이 같하는지

#document-fragment 
|_<div> 
    |_<p> 
    |_<span> 
     <div></div> 
     </span> 
    </p> 
    </div> 

: 함수 만 VAR 조각의 두 번째 노드를 반환? 고급 대한

감사합니다 :)

PD : 내 영어 죄송합니다, 나는 아르헨티나에서 왔어요.

답변

0
var Tree = (function (_Obj) { 
    var _E, 
     _N; 
    _E = document.createDocumentFragment(); // put this out of forEach 
    _Obj.forEach (function (e) { 
    if ("tagName" in e) { 
     _N = document.createElement(e.tagName); 
    } 
    if ("childNode" in e) { 
     _N.appendChild(Tree (e.childNode)); 
    } 
    _E.appendChild (_N); // put this inside of forEach 
    }); 
    return _E; 
}); 
1

은 foreach 루프를 통해 이동하고 오른쪽 물건 _N를 할당처럼 보이지만 전체 루프를 거친 후에 만 ​​_E_N을 추가합니다. _E.appendChild(_N)을 각각의 안쪽과 아래쪽으로 옮깁니다.

+0

무엇이 잘못되었는지 설명하는 데 +1. – jfriend00

관련 문제