공백 안에 있는 문자들을 span으로 감싸는 방법?

조회수 906회
<div>
  <span>&nbsp;&nbsp;ABC&nbsp;&nbsp;BCD</span>
</div>

다음과 같이 &nbsp;로 둘러쌓인 문자가 있을때

<div>
  &nbsp;&nbsp;
  <span>ABC</span>
  &nbsp;&nbsp;
  <span>BCD</span>
</div>

이것 처럼 변환하고 싶은데

어떤 방식으로 접근하면 될까요?

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    자답합니다.

    작성한 코드 공유합니다.

    var result = '';
    var div = document.querySelector('div'); // get the div wrapper
    div.childNodes.forEach(function(node) { // loop over the nodes
        if (node.nodeName == '#text') { // if text
            var span = document.createElement('span');
            span.textContent = node.textContent;
    
            var text_list = span.innerHTML.split('&nbsp;');
            var text_elements = text_list.map(function(text) {
                if (text) {
                   return '<span>' + text + '</span>';
                }
                return '';
            });
            result += text_elements.join('&nbsp;');
        } else {
            result += node.outerHTML;
        }
    });
    div.innerHTML = result;
    
  • 아래와 같이 해볼 수 있겠네요

    var s = "&nbsp;&nbsp;ABC&nbsp;&nbsp;BCD"
    s.split('&nbsp;&nbsp;').filter(item => item).forEach(function (v, i){console.log('&nbsp;&nbsp;<div>' + v + '</div>');})
    
    &nbsp;&nbsp;<div>ABC</div>
    &nbsp;&nbsp;<div>BCD</div>
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)