2012-11-15 5 views
2

웹 응용 프로그램에서 필요한 초기 div가 먼저 다운로드됩니다. 그런 다음 요청을 보내고 ajax 호출을 사용하여 추가 절대 div (팝업 divs/경고 msg div 등)를 가져옵니다. 이제 내가하는 일은 아래에 있습니다.innerHTML +를 사용하는 것이 좋습니다?

document.body.innerHTML += secondarydivs; 

신체로 인해 성능이 저하되어 더 많은 div가 추가 될 예정입니까? 내가 정확히 알아야 할 것은,이 문장이 실행될 때 전체 문서가 다시 그려지거나 additonal 문자열 만이 DOM에 추가된다는 것입니다.

감사합니다.

+1

[** 유사한 질문 **] (http://stackoverflow.com/questions/2319472/should-you-add-html-to-the-dom-using-innerhtml-or-by-creating-new -elements-one-b) –

+0

괜찮습니다. 스레드 (예 : JS 호출 스택 종료)를 릴리스 할 때까지 문자열로 추가하는 secondarydivs를 DOM에서 사용할 수 없다고 생각하십시오. 따라서 innerHTML을 추가 한 직후에이를 참조해야하는 경우 setTimeout (fn, 0)을 사용하여 수행하거나 document.createElement를 사용하여 작성하십시오. – LittleSweetSeas

+0

@ 리틀 스위츠 (LittleSweetSeas) Cthulhu의 링크에 따르면 내가 사실이라면 실제로 더 이상 확신 할 수 없다. 나는 틀렸다. 참고 용으로 : 나는 innerHTML이 내 지식에 따르면 예를 들어 document.createElement보다 빠르다고 썼다. 그리고 나는 그것보다 더 빨리 아무것도 모른다. – mkk

답변

3

DOM을 HTML로 serialize하고 기존 노드를 모두 삭제 한 다음 (프로세스에서 바인딩 된 이벤트 처리기를 잃어 버림) HTML에서 해당 노드를 다시 만들고 새 노드를 다시 만듭니다.

appendChild 및 친구들을 사용하십시오.

0

정확히 어떤 일을하는지에 따라 다릅니다. 일종의 콜백 함수에서 단 하나의 문장 일 경우에는 괜찮습니다.하지만 루프에서 설정하면 전체를 문자열로 구성하고 innerHTML에 추가하는 것을 고려해야합니다.

관련 문제