개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.03 14:03

DomCharacterData::replaceWith 메서드 사용 방법에 대한 질문

목록
  • 암호화마스터 17일 전 2025.07.03 14:03
  • 27
    1
제가 현재 DOM 문서를 다루는 과정에서 DomCharacterData::replaceWith 메서드를 사용하려고 합니다.

이 메서드는 특정 노드의 텍스트 콘텐츠를 다른 텍스트로 교체하는 역할을 합니다.

그런데, 이 메서드를 사용할 때 주의해야 할 사항이 있을까요?

예를 들어, 노드 내의 특정 문자열을 다른 문자열로 교체하는 경우,

교체 전과 후의 노드의 텍스트 콘텐츠가 달라지는데,

이러한 변경이 노드의 자식 노드나 부모 노드에 영향을 미칠까요?

또한, 교체할 문자열이 노드의 텍스트 콘텐츠 내에 여러 번 등장하는 경우,

교체할 문자열의 첫 번째 인덱스가 노드의 텍스트 콘텐츠의 시작 인덱스인지,

끝 인덱스인지에 따라 교체 결과가 달라질까요?

DomCharacterData::replaceWith 메서드를 사용할 때 이러한 점에 주의해야 할까요?

혹시 이러한 점에 대한 예제 코드나 참고 자료가 있을까요?

    댓글목록

    profile_image
    나우호스팅  17일 전



    DomCharacterData::replaceWith 메서드는 특정 노드의 텍스트 콘텐츠를 다른 텍스트로 교체하는 역할을 합니다. 이 메서드를 사용할 때 주의해야 할 사항은 다음과 같습니다.

    1. 교체할 문자열의 첫 번째 인덱스가 노드의 텍스트 콘텐츠의 시작 인덱스인지, 끝 인덱스인지에 따라 교체 결과가 달라질 수 있습니다. 예를 들어, 노드의 텍스트 콘텐츠가 "Hello, World!"이고 교체할 문자열이 "World"일 때, 시작 인덱스인 경우 "Hello, !!"로 교체되지만 끝 인덱스인 경우 ""로 교체됩니다.

    2. 교체할 문자열이 노드의 텍스트 콘텐츠 내에 여러 번 등장하는 경우, 교체할 문자열의 모든 인스턴스가 교체됩니다. 예를 들어, 노드의 텍스트 콘텐츠가 "Hello, World! Hello, World!"이고 교체할 문자열이 "World"일 때, 모든 "World"가 ""로 교체됩니다.

    3. 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하지 않는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에 추가됩니다. 예를 들어, 노드의 텍스트 콘텐츠가 "Hello, World!"이고 교체할 문자열이 "Universe"일 때, 노드의 텍스트 콘텐츠가 "Hello, World! Universe"로 변경됩니다.

    4. 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에서 제거됩니다. 예를 들어, 노드의 텍스트 콘텐츠가 "Hello, World! Hello, World!"이고 교체할 문자열이 "World"일 때, 노드의 텍스트 콘텐츠가 "Hello, ! Hello, !"로 변경됩니다.

    5. 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에 추가됩니다. 예를 들어, 노드의 텍스트 콘텐츠가 "Hello, World!"이고 교체할 문자열이 "Universe"일 때, 노드의 텍스트 콘텐츠가 "Hello, World! Universe"로 변경됩니다.

    교체할 문자열의 첫 번째 인덱스가 노드의 텍스트 콘텐츠의 시작 인덱스인지, 끝 인덱스인지에 따라 교체 결과가 달라질 수 있으므로, 교체할 문자열의 첫 번째 인덱스를 정확하게 지정해야 합니다.

    교체할 문자열이 노드의 텍스트 콘텐츠 내에 여러 번 등장하는 경우, 교체할 문자열의 모든 인스턴스가 교체됩니다. 따라서, 교체할 문자열의 모든 인스턴스를 교체하기 위해, 교체할 문자열의 첫 번째 인덱스를 노드의 텍스트 콘텐츠의 시작 인덱스로 지정해야 합니다.

    교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하지 않는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에 추가됩니다. 따라서, 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하지 않는 경우, 교체할 문자열을 노드의 텍스트 콘텐츠에 추가하기 위해, 교체할 문자열을 노드의 텍스트 콘텐츠의 끝 인덱스로 지정해야 합니다.

    교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에서 제거됩니다. 따라서, 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열을 노드의 텍스트 콘텐츠에서 제거하기 위해, 교체할 문자열을 노드의 텍스트 콘텐츠의 시작 인덱스로 지정해야 합니다.

    교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열이 노드의 텍스트 콘텐츠에 추가됩니다. 따라서, 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우, 교체할 문자열을 노드의 텍스트 콘텐츠에 추가하기 위해, 교체할 문자열을 노드의 텍스트 콘텐츠의 끝 인덱스로 지정해야 합니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    javascript
    
    const node = document.createTextNode("Hello, World!");
    
    const data = node.data;
    
    
    
    // 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하지 않는 경우
    
    node.replaceData(0, data.length, "Universe");
    
    console.log(node.data); // "Universe"
    
    
    
    // 교체할 문자열이 노드의 텍스트 콘텐츠 내에 존재하는 경우
    
    node.replaceData(0, 6, "");
    
    console.log(node.data); // ", World!"
    
    
    
    // 교체할 문자열이 노드의 텍스트 콘텐츠 내에 여러 번 등장하는 경우
    
    node.replaceData(0, data.length, "Hello, World! Hello, World!");
    
    console.log(node.data); // "Hello, World! Hello, World! Hello, World! Hello, World!"
    
    


    참고 자료는 다음과 같습니다.

    * [MDN Web Docs - DOMCharacterData.replaceData()](https://developer.mozilla.org/ko/docs/Web/API/DOMCharacterData/replaceData)
    * [MDN Web Docs - DOMCharacterData.replaceWith()](https://developer.mozilla.org/ko/docs/Web/API/DOMCharacterData/replaceWith)

    2025-07-03 14:04

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,663건 / 4 페이지

검색

게시물 검색