>웹 프론트엔드 >JS 튜토리얼 >innerHTML 작업 최적화(코드 실행 효율성 향상)_javascript 기술

innerHTML 작업 최적화(코드 실행 효율성 향상)_javascript 기술

WBOY
WBOY원래의
2016-05-16 18:03:231365검색

예: 우리가 달성하려는 효과는 사용자가 마우스를 클릭할 때 일부 새로운 데이터가 이전 데이터에 추가되는 것입니다.
표준 DOM을 사용하는 경우 전체 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.




;
< ;p>data


<script> <br>document.onmousedown = function() { <br>for (var i = 0; ; 10; i ) { <br>var p = document.createElement("p"); <br>p.appendChild(document.createTextNode(Math.random())) <br>document.getElementsByTagName('div' )[0].appendChild(p) <br><br>} <br></body> <br><br> 🎜>참고: Once 구조가 더 복잡하면 표준 DOM을 작성하려면 긴 코드가 필요합니다. <br> innerHTML을 사용하는 경우 코드의 일부는 다음과 같습니다. <br><br><br> </div> <br>코드 복사<br><br><div class="codetitle"> 코드는 다음과 같습니다. <span><a style="CURSOR: pointer" data="18068" class="copybut" id="copybut18068" onclick="doCopy('code18068')"> <u> <script> </u>document.onmousedown = function() { </a>var html = ""; </span>for (var i = 0; i < 10; i ) 🎜>html = "<p>" Math.random() "<p>" </div>document.getElementsByTagName('div')[0].innerHTML = <div class="codebody" id="code18068">}; <br></script&gt ; <br><br> <br>참고: innerHTML에는 표준 DOM에 AppendChild가 없으므로 "=" 메서드가 사용되므로 비효율적입니다. <br>innerHTML과 표준 DOM을 함께 사용할 수 있으므로 두 가지의 장점을 모두 얻을 수 있습니다. 코드의 일부는 다음과 같습니다. <br><br><br><br><br>코드 복사</div> <br><br> 코드는 다음과 같습니다. <br><div class="codetitle"> <span><script> <a style="CURSOR: pointer" data="96042" class="copybut" id="copybut96042" onclick="doCopy('code96042')">document.onmousedown = function() { <u>var html = ""</u>for (var i = 0; i < 10; i ) { </a>html = "<p>" Math.random() "<p>" </span>} </div>var temp = document.createElement ("div"); <div class="codebody" id="code96042"> temp.innerHTML = <br>while (temp.firstChild) { <br>document.getElementsByTagName('div')[0].appendChild(temp.firstChild); } <br>}; <br> </script>


참고: 요소를 생성한 다음 innerHTML을 삽입한 다음 요소에 표준 DOM 작업을 사용합니다.
아직 끝나지 않았습니다. 비동기 innerHTML은 더욱 강력한 솔루션을 제공합니다. 코드의 일부는 다음과 같습니다.




코드 복사


코드는 다음과 같습니다.

<script> <span>document.onmousedown = function() { <a style="CURSOR: pointer" data="35563" class="copybut" id="copybut35563" onclick="doCopy('code35563')">var html = "" <u>for (var i = 0; i < 10; i ) { </u>html = "<p>" Math.random() "<p>" </a>var temp = document.createElement('div'); temp.innerHTML = html; </span>var frag = document.createDocumentFragment(); </div>(function() { <div class="codebody" id="code35563">if (temp.firstChild) { <br>frag.appendChild(temp.firstChild); <br>setTimeout(arguments.callee, 0); <br>} else { <br>document.getElementsByTagName('div')[0].appendChild(frag); <br>} <br>})(); >} ; <br></script>


참고: 브라우저 막힘을 방지하려면 setTimeout을 사용하고, 렌더링 수를 줄이려면 DocumentFragment를 사용하세요.
또 다른 사항: 문자열을 이어붙일 때 코드가 더 빨라질 수 있습니다. 자세한 내용은
HTML 문자열을 작성하는 가장 빠른 방법
을 참조하세요.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.