본문 바로가기
공부일지/Javascript

Vanilla Js. textarea(replace메서드, 개행)

by 곰인간 2023. 2. 21.

오늘 별거도 아닌걸로 겁나게 헤맸다..

textarea를 사용해서 입력한 값을 저장해서 불러오는거였는데..

줄 바꿈이 안되네?

후, 그래서 찾아보았다.

개행하는 법!

하지만 개행 이후에도 고난이 있었으니..


바로 코드 들어가겠습니다.

HTML코드

<textarea  id="textInput"></textarea>

<button id="click">click</button>

<p id="textOutput"></p>

오늘의 주인공 textarea 태그의 입력값을 클릭을 누르면 p태그에 출력이 되도록 하겠습니다.

Javascript 코드

const input = document.querySelector("#textInput");
const output = document.querySelector("#textOutput");
const click = document.querySelector("#click");

click.addEventListener("click", function(){
    const inputVal = input.value;
    output.innerHTML = inputVal;
})

input 요소의 값이 click 이벤트를 실행했을 때 output 요소의 내용으로 출력됩니다.

textarea의 입력값이 출력이 된다!


오, 잘 출력이 됩니다.

그치만 뭔가 어설픈 느낌?

textarea에서는 줄이 바뀌어 있는데,

출력된 곳에는 줄이 바뀌지 않고 같은 줄에서 다 출력이 되네요.

처음엔 만들고 출력이 된다는 기쁨에 잊고 있다가 나중에 되어서야 알아봤다는.

그럼 개행이 되게 코드를 수정해보겠습니다.

자바스크립트 코드

const input = document.querySelector("#textInput");
const output = document.querySelector("#textOutput");
const click = document.querySelector("#click");

click.addEventListener("click", function(){
    const inputVal = input.value;
    const replaceVal = inputVal.replace(/\n/g, "<br>");
    output.innerHTML = replaceVal;
});​

짜잔?

inputVal을 바로 출력했던거와 다르게 inputVal에 replace메서드를 사용했습니다.

replace메서드는 문자열에서 특정 패턴을 찾아서 다른 문자열로 치환 할 수 있습니다.

여기서 \n 은 문자열에서 개행시켜주는 문자인데, 이게 HTML 태그의 줄 바꿈을 하는 <br>로 바꾸는 작업이 필요합니다.

 /\n/g 에서  \n은 개행을 나타내며, g는 global을 의미합니다.
(global은 문자열 전체에서 패턴을 찾아 모두 일치하는 문자여로 치환하거나 검색 할 수 있습니다.)

그러니까, g 없이 \n 개행만 하면 한 번의 행에만 동작하고 이후에 두, 세번의 행에서는 동작하지않습니다.

개행이 한 번이 아닌 반복적으로 치환되는 것을 확인.


오늘은 textarea의 입력값을 출력하는거 해보았는데요.

솔직히 처음에는 그냥 쓰자고 생각했다가

막상 글을 적고 출력을 시켜보니 행 바꿈이 안되는게 눈에 거슬렸었습니다.

그래서 뒤적뒤적 찾았어요 ㅋㅋ

그리고 생각보다 많은 사람들이 이 문제를 겪었더라구요.

그래도 앞선 발자취를 따라 잘 해결했습니다.

replace메서드 문자열 개행\n html 개행<br>

몰랐던 것도 알고, 잊고 지내던 것도 생각나게 하는

그런 공부였네요.

앞으로 할 공부도 많고 잘 하고 싶은거도 많은데,

먼저 글을 잘 쓰는 법을 익혀야겠네요.

머릿속으로는 이해가 되는데 막상 다른 사람들에게 전달하는 글을 쓰려니깐 매번 고행입니다.

뒤죽박죽 중구난방으로 적은 글 읽어 주시는 모든 분들께 감사를..

 

댓글