JavaScript에서 버튼 클릭 시 새로운 이름을 목록에 추가하려면 요소를 생성한 뒤 DOM에 삽입하는 방식을 사용하고, 이미 추가된 요소를 제거하려면 remove() 메서드를 사용하면 됩니다. 아래 예제는 입력창에 이름을 입력하고 버튼을 클릭하면 목록에 이름이 추가되며, 각 항목의 삭제 버튼을 누르면 해당 이름이 목록에서 제거되는 기능을 구현한 코드입니다.
전체 코드 예제
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initialscale=1.0">
<title>Document</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fontawesome/4.7.0/css/font-awesome.min.css">
<style>
</style>
</head>
<body>
<div class="">
<ul id="listOfName"></ul>
</div>
<div class="">
<h1 class="">Add A New Name</h1>
<div class="">
<input type="text" id="name" placeholder="Add Name......">
<button class="btn" id="addNameButton">AddName</button>
</div>
</div>
</div>
<script>
var givenName = document.querySelector('#name')
var btnClass = document.querySelector('#addNameButton')
var listOfName = document.querySelector('#listOfName')
btnClass.addEventListener('click', () => {
var actualName = givenName.value
if (actualName.length != 0) {
var createAnHTMLList = `<li class=""><div>${actualName}</div><button onclick="removeNameFromTheList(this)">Remove Name</button>`
listOfName.innerHTML += createAnHTMLList
givenName.value = ''
givenName.classList.remove('red')
} else{
givenName.classList.add('red')
}
})
function removeNameFromTheList(e) {
e.parentElement.remove()
}
</script>
</body>
</html>
프로그램 실행 방법
위 프로그램을 실행하려면 파일 이름을 “anyName.html”(또는 index.html)로 저장한 후 파일을 마우스 오른쪽 버튼으로 클릭합니다. 그다음 VS Code 편집기에서 “Open with Live Server” 옵션을 선택하면 브라우저에서 바로 결과를 확인할 수 있습니다.
실행 결과
위 코드를 실행하면 다음과 같은 초기 화면이 나타납니다.

여기서는 John과 David, 두 개의 이름을 차례로 추가해 보겠습니다. 먼저 입력창에 “John”을 입력한 뒤 “AddName” 버튼을 클릭합니다.

“AddName” 버튼을 클릭하면 다음과 같이 목록에 이름이 추가된 것을 확인할 수 있습니다.

같은 방법으로 “David”도 추가합니다. 두 이름을 모두 추가하면 다음과 같은 결과 화면이 표시됩니다.

이제 ‘John’ 항목의 “Remove Name” 버튼을 클릭해 해당 이름을 제거해 보겠습니다. 그러면 다음과 같이 목록에서 John이 사라진 것을 확인할 수 있습니다.

코드 동작 원리 정리
document.querySelector()를 사용해 입력창(#name), 추가 버튼(#addNameButton), 이름 목록(#listOfName) 요소를 각각 가져옵니다.- 버튼에
click이벤트 리스너를 등록하고, 클릭 시점에 입력창의 값을 읽어옵니다. - 입력값이 비어 있지 않으면 템플릿 리터럴로
<li>항목을 생성해 목록에 추가하고, 입력창을 비운 뒤 ‘red’ 클래스를 제거합니다. - 입력값이 비어 있으면 입력창에 ‘red’ 클래스를 추가해 사용자에게 값 입력이 필요함을 시각적으로 알립니다.
- 각 항목의 삭제 버튼은
removeNameFromTheList(this)함수를 호출하며, 이 함수 내부의e.parentElement.remove()가 해당<li>항목을 목록에서 완전히 삭제합니다.