2012-10-29 2 views
24

제목이 매우 명확합니다. innerHTMLcreateTextNode (Append과 함께 사용) 사이에 큰 차이가 있습니까?innerHTML과 createTextNode를 사용하여 스팬을 채우는 데 큰 차이가 있습니까?

+0

차이는 없습니다. –

+3

무엇? createTextNode()는 텍스트를 노드에 추가 할 때 innerHTML보다 몇 배 더 빠릅니다. http://jsperf.com/innerhtml-and-createtextnode – devnull69

+0

@ devnull69을 참조하십시오.이 테스트는 특히 새로운 내용을 여러 번 추가하기위한 테스트이며 자연스럽게 HTML 추가가 느려질 것입니다. 하지만 텍스트를 추가하는 것만으로도 매우 유사합니다 (innerHTML은 실제로 조금 더 빠릅니다). http://jsperf.com/innerhtml-and-createtextnode/2 내 컴퓨터에서 – David

답변

29

물론. createTextNode은 문자열을 이스케이프 처리하고 그대로 표시하며, innerHTML은 html 류 문자열을 DOM으로 렌더링 할 수 있습니다. 원하지 않는 경우 (예 : 문자에 직접 이스케이프 문자를 지정할 때 이스케이프 처리되지 않은 태그가 포함되어 있지 않은 경우) textContent (또는 IE의 경우 innerText)을 사용할 수 있습니다.

그러나 모든 브라우저가 별다른 차이없이 똑같이 지원하기 때문에 createTextNode을 권하고 싶습니다.

+0

"* ... 스팬을 텍스트로 채우기 *" –

+3

예. 그러나 * 텍스트 * 태그를 포함 할 수 있습니다 (모를), 그래서 OP는'innerText' /'textContent'를 적어도 사용합니다. – Bergi

+1

@ Bergi - 대안으로 textContent/innerText를 포함하도록 답변을 업데이트해야합니다 (아마 심지어 선호된다). – RobG

0

내 이해 innerHTML의 특정 조작은 모든 바운드 이벤트를 제거하므로 createTextNode를 사용하는 것이 좋습니다.