개발새발개발/JavaScript

JavaScript - Alert Box 만들기2편(EventListener)

birdsfoot 2024. 12. 13.

 

지난번에 이어 JavaScript 복습하기!

그 중에서 JavaScript 에서 중요한 EventListener 파트에 대해 공부할 예정이다

 

 

Alert 2개 만들기


 

[1] 각각의 함수 만들기

- 어려우면 한글로 먼저 따라써보기

- p태그를 어떻게 지정해야할지 몰라 헤맸는데, id를 부여해주면 해결되는 문제였다!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="main.css">
</head>
<body>
    <!-- UI 만드는 법 : 1. 미리디자인해놓고 숨김 2. 버튼 누르거나 하면 보여줌 -->

    <div class="alert-box" id="alert">
        <p id="title">Alert 박스</p>
        <button onclick="alertToggle('none')">닫기</button>
    </div>
  
    <button onclick="alertId()" >아이디</button>
    <button onclick="alertPassword()">비밀번호</button>

    <script>

        // 참고
        // class selector를 이용하기
        // 인덱싱가능(class 중 2번째거 찾기)
        // document.getElementsByClassName('alert-box')[2].inner~

        function alertId() {
            // 제목바꾸기
            document.getElementById('title').innerHTML = '아이디를 입력하세요'
            // 열기
            alertToggle('block')
            // document.getElementById('alert').style.display = 'block'
        }
        

        function alertPassword() {
            document.getElementById('title').innerHTML = '비밀번호를 입력하세요'
            alertToggle('block')
        }

        //alert 상태를 변경하는 함수
        function alertToggle(arg) {
            document.getElementById('alert').style.display = arg
        }

        

    </script>
    
</body>
</html>

 

 

[2] 파라미터 활용하기

- 개인적으로는 글이 길어지면 파라미터도 길어져 가시성은 좀 아쉬움

- 상황에 맞게 활용해야 할 듯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="main.css">
</head>
<body>
    <!-- UI 만드는 법 : 1. 미리디자인해놓고 숨김 2. 버튼 누르거나 하면 보여줌 -->

    <div class="alert-box" id="alert">
        <p id="title">Alert 박스</p>
        <button onclick="alertToggle('none')">닫기</button>
    </div>
  
    <button onclick="alertChange('아이디를 입력하세요')" >아이디</button>
    <button onclick="alertChange('비밀번호를 입력하세요')">비밀번호</button>

    <script>

        function alertChange(arg) {
            // 제목바꾸기
            document.getElementById('title').innerHTML = arg
          
            // 열기
            document.getElementById('alert').style.display = 'block'
        }
        


        //alert 상태를 변경하는 함수
        function alertToggle(arg) {
            document.getElementById('alert').style.display = arg
        }

        

    </script>
    
</body>
</html>

 

 

[3] addEventListener 사용하기

- Event 종류에는 click 외에도 keydown, scroll, mouseover 등 다양한게 있다

- getElement 를 이용해 얻은 요소에 특정 event가 발생하면 function부분을 실행한다.

        document.getElementById('close').addEventListener('click', function(){
            document.getElementById('alert').style.display = 'none'
        })
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="main.css">
</head>
<body>
    <!-- UI 만드는 법 : 1. 미리디자인해놓고 숨김 2. 버튼 누르거나 하면 보여줌 -->

    <div class="alert-box" id="alert">
        <p id="title">Alert 박스</p>
        <button id="close">닫기</button>
    </div>
  
    <button onclick="alertChange('아이디를 입력하세요')" >아이디</button>
    <button onclick="alertChange('비밀번호를 입력하세요')">비밀번호</button>

    <script>

        document.getElementById('close').addEventListener('click', function(){
            document.getElementById('alert').style.display = 'none'
        })
        // event에는 click 외에도 keydown, scroll, mouseover 등 다양한게 있음

        function alertChange(arg) {
            // 제목바꾸기
            document.getElementById('title').innerHTML = arg
          
            // 열기
            document.getElementById('alert').style.display = 'block'
        }
                

    </script>
    
</body>
</html>

 

 

 

 

- Vue에서는 v-on으로 간편하게 사용할 수 있는 EventListener

- Vue를 한창하다가 오랜만에 JS에서 EventListener를 사용하니까 조금 헷갈렸다!

 

댓글