확장 변수로 텍스트가 입력되어 있는데, \n 이나 ** 등이 포함되어 있습니다.
이걸 본문에서 {$oDocument->getExtraEidValue('key_sentence')} 이렇게 출력하는데
\n 은 줄바꿈, **로 둘러싸인 텍스트는 bold 처리하기 위해서,
<script> document.addEventListener("DOMContentLoaded", function() { // 특정 요소의 \n을 <br>로 바꾸는 함수 function replaceNewlinesInElement(element) { // 요소의 자식 노드들을 순회 element.childNodes.forEach(function(node) { // 텍스트 노드일 경우 \n을 <br>로 변환 if (node.nodeType === Node.TEXT_NODE) { const replacedText = node.textContent.replace(/\n/g, '<br>'); const newNode = document.createElement('span'); newNode.innerHTML = replacedText; node.replaceWith(newNode); } }); } // 모든 .model_answer_details-content 요소들에 적용 const elements = document.querySelectorAll('.model_answer_details-content'); elements.forEach(function(element) { replaceNewlinesInElement(element); }); }); </script>
이렇게 해봤는데 전혀 안먹혀요.
도와주세요 ㅠ.ㅠ
확장변수를 출력하는 과정에서 변환하는 것이
이미 출력해 놓은 확장변수를 나중에 조작하는 것보다 훨씬 깔끔하고 안전합니다.
즉 자바스크립트는 단 한 줄도 작성할 필요가 없습니다.
예를 들어 getExtraEidValue 대신 getExtraEidValueHTML을 사용하면
줄바꿈은 코어가 알아서 <br>로 변환해 줍니다. 굳이 다른 데서 수십 줄의 코드를 작성할 필요가 없죠.
그 밖의 특수문자 변환도 이 부분에서 PHP 함수나 정규식으로 치환하시고요.