2012-05-31 9 views
0

이 스크립트의 목적은 동적으로 요소 복제본을 만든 다음 JS 개체 내에 포함 된 데이터로 복제본을 채우는 것입니다. 내 목표는 서버에서 파싱 된 JSON을 반환하고 DOM 내의 요소를 복제하고 서버의 데이터로이 클론을 채우는이 함수를 호출하는 것입니다. 포함 I 이러한 요소 동적 오브젝트 (eTreeObj)을 판독함으로써 생성 될하고자for 루프에서 for 루프를 중단 한 후

var HTMLelementAsJSstring = "<article></article>"; 

:이하려는 이유는 완전히 같은 명시 적으로 기록 JS 문자열로부터 HTML 요소의 동적 생성을 제거하는 것 구문 분석 된 JSON (JS 객체로) 속성에 대한 요소의 관계. 여기

var jso = { 
"Result": [ 
    { 
     "Title": "HQWE", 
     "Details": "sdfsdf" 
    }, 
    { 
     "Title": "WQasdaE", 
     "Details": "asdadas" 
    } 
    ] 
}; 


function dynECreatefromJSO(Oproperty, parentE, childE, eTree) { 
    for (i = 0; i <= Oproperty.length; i++) { 

     if (i != 0) { 
      var TargetE = Eclone.appendTo(parentE); 
     } else { 
      var TargetE = $(childE), 
       Eclone = TargetE.clone(); 
     } 

     for (q = 0; q <= eTree.length; q++) { 
      TargetE.children(eTree[q].Element).html(Oproperty[i][eTree[q].JSOproperty]); 
     } 
     alert("DOESN'T REACH HERE"); 

    } 
} 

var eTreeObj = [ { 
     "Element": "header", 
     "JSOproperty": "Title" 
     }, 
     { 
     "Element": "article", 
     "JSOproperty": "Details" 
     } 
    ]; 

dynECreatefromJSO(jso.Result, "div#main", "section.thiselement", eTreeObj);​ 

(jQuery로) 내 JS 그리고 내 HTML입니다 :

<div id="main"></div> 

<section class="thiselement"> 
    <header></header> 
    <article></article> 
</section>​ 

내가 루프의 내부 eTree 객체에서 속성에 액세스 할 때 오전 데 문제가 발생 여기서 내 증가 변수는 "q"입니다. 함수가 중단되어 증가하는 변수 "i"를 사용하여 루프를 다시 실행할 수 없습니다.

for 루프 내에서 작업을 제거하면 모든 것이 정상적으로 작동합니다.

이 배열 때문에

답변

2

당신은이 같은 루프를 변경해야,

for (i = 0; i < Oproperty.length; i++) { 

    if (i != 0) { 
     var TargetE = Eclone.appendTo(parentE); 
    } else { 
     var TargetE = $(childE), 
      Eclone = TargetE.clone(); 
    } 

    for (q = 0; q < eTree.length; q++) { 
     TargetE.children(eTree[q].Element).html(Oproperty[i][eTree[q].JSOproperty]); 
    } 
    alert("DOESN'T REACH HERE"); 

} 

입니다 http://jsfiddle.net/KKv22/2/ :이 왜 나는 알아낼 수 없습니다 색인은 0 (영)으로 시작합니다. 따라서 길이 1 색인까지만 항목을 포함합니다.

+0

감사합니다. 그게 말이 되네. – TaylorMac