2017-12-06 33 views
0

많은 div가있는 동적 양식을 작성하고 있습니다. 각 div에는 고유 한 입력 조합이 있습니다. appendChild가 innerHTML을 변경하는 것보다 빠르다는 것을 알았 기 때문에 내 솔루션은 배열 수를 빌드하는 것입니다. 각 배열은 양식의 div이며 각 배열에는 정의 된 여러 객체가 있습니다. 각 객체는 입력입니다.노드의 속성에 객체의 속성이나 배열을 첨부하십시오.

예 : (html 태그로와보다 '태그'속성을 사용하는 동안 : 처음에, 내가 지금처럼 의 setAttribute를 사용하여 새 요소로 개체의 속성을 연결하는 foreach 문을 사용

 var div = [ 
      label = { 
       tag: "label", 
       text: "Enter password", 
       for: "pass" 
      }, 
       input = { 
       tag: "input", 
       type: "password", 
       name: "pass" 
      } 
     ]; 

삭제하므로 속성으로 표시되지 않습니다).

for(var elem in div) { 
    var temp = document.createElement(div[elem].tag); 
    delete div[elem].tag; 
    for(var prop in div[elem]) { 
     temp.setAttribute(prop,input[prop]); 
    } 
    parentDiv.appendChild(temp); 
} 

문제는 속성을 통해 추가 할 수없는 요소에 추가하고 싶은 것이 많다는 것입니다. 좋아요 : innerText. 그래서 어쩌면 배열 배열을 'temp'노드에 병합 할 수있는 배열로 만들 수 있습니까?

미리 감사드립니다.

답변

0

당신은 단지이

for(var elem in div) { 
    var temp = document.createElement(div[elem].tag); 
    delete div[elem].tag; 

    // add the other properties 
    ["innerHtml", "innerText"].forEach(function (attr) { 
    if(div[ele][attr]) { 
     temp[attr] = div[ele][attr] 
     delete div[ele][attr]; 
    }); 

    // add the attributes 
    for(var prop in div[elem]) { 
    temp.setAttribute(prop.input[prop]); 
    } 
    parentDiv.appendChild(temp); 
} 
+0

같은 루프에 대한 귀하의 제안 나를 위해 작동하지 않습니다하기 전에 다른 부분에서 그것을 처리 할 수 ​​.. – user3289991