2013-08-31 2 views
1

조금 주위를 둘러 보았고 DOM 요소가 50 개 이상인 경우 DOM 요소를 제거하는 방법을 찾지 못하는 것 같습니다. 기본적으로 채팅과 비슷합니다.개수가 x보다 많으면 모든 요소를 ​​제거하십시오.

JS

function append(aVal) { 
    document.getElementById('elem').innerHTML += "<br/>" + aVal; 
} 

사용 나는 BR & 스팬 태그를 제거하기 위해 노력하고있어

<div id="elem" class="container"></div> 

appendvalues("<span>Your message " + message + ".</span>"); 

HTML. 페이지에 다른 span 태그가 있기 때문에 span 태그에 대한 클래스를 만드는 것이 좋을 것이라고 생각합니다.

+0

jQuery로 질문에 태그를 추가했지만 순수한 JS 또는 jQuery 솔루션을 찾고 있습니까? –

+0

채팅하는 것보다 비슷합니다. 이 유형의 디자인은 당신을 아주 멀리하지 않을 것입니다. 당신은 논리를 더 잘 만들고 UI에 그것을 반영시켜야합니다. 이 경우'ChatClient'를 가지고 메시지 문자열과 기타 관련 데이터를 저장하고 UI에 메시지 변경 사항을 반영하게하십시오. 그런 다음 이전 메시지를 제거하고 특정 지점을 초과하여 자르려면 해당 메시지와 관련된 DOM 노드를 제거하면됩니다. 컨테이너의 innerHTML을 조작하는 또 다른 방법은 권장되지 않습니다. DOM API를 사용하여 노드를 추가하는 것이 훨씬 낫다. – MasterAM

답변

1

나는 ... 당신이 FIFO를하고 싶지 나는 .innerHTML +=... 대신 .insertAdjacentHTML를 사용하고

function append(aVal) { 
    var el = document.getElementById('elem'); 
    el.insertAdjacentHTML("beforeend", "<br/>" + aVal); 

    var spans = el.getElementsByTagName("span"); 
    if (spans.length > 50) { 
     el.removeChild(spans[0].nextSibling); 
     el.removeChild(spans[0]); 
    } 
} 

주를 가정합니다. 이것은 HTML에서 내용을 추가하는 데 훨씬 덜 파괴적인 방법입니다.

+0

감사합니다. br 태그를 제거하지 않았습니다. 나는 그것을 직접 추가했다. – ECMAScript

+0

@ ECMAScript : 오, 예, 맞습니다. 완료되도록 업데이트하겠습니다. –

0

원하는대로 할 수 있습니까?

$("#elem > span:gt(50)").remove(); 
관련 문제