ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] HTML 버튼 클릭 시 JavaScript 함수 호출 시 매개변수 전달이 안 되는 문제
    언어/Javascipt 2024. 4. 17. 13:46

    ❓만약에 onclick =”if_click_login(여기에)” 여기에 ‘clciked’ 를 넣으면? 함수랑 겹치는 데 어떻게 되려나

    위 질문으로 부터 시작되었습니다.

    상황 설명 


    위 사진의 빨간색 동그라미를 보시면 login button을 클릭할 때, 팝업창이 뜨고, 팝업창 안의 메시지는 ' clicked ' 가 나오게 되어 있습니다. 
    onclick : 요소가 클릭되었을 떄, 특정 동작을 수행하도록 지정

    alert('쓰고싶은 메시지를 작성하세요.') : 경고창(팝업)을 표시하는 함수입니다.

    따라서 위 사진 같이 login button을 click 할 때, 경고창(팝업) clicked 했다 라고 뜨는 것입니다.

    신기하쥬?

    이제 Function(함수)를 이용해서 똑같이 해보겠습니다.

    js파일에 위 사진과 같이 작성해줍니다.

    위 사진과 같이 수정해줍니다. () 소괄호 넣는 거 깜빡하지 마세요 !  제가 그랬거든요..

    똑같이 아주 잘 돌아가는 모습을 볼 수 있습니다.

     

    여기부터 질문에 대한 내용입니다.

    1. onclick = "alert('clicked')"

    2. onclick = "if_click_login()"

    3. 그러면 1번을 2번에 대입 하면 어떻게 될까요?

    4. if_click_login() 소괄호 안에 'HI' 라고 작성해보겠습니다.

    결과는 clicked 경고창 한번만 뜨고 HI에 대한 경고창이 뜨지 않았습니다. 

    WHY ❓

    HTML 코드에서 onclick 이벤트 핸들러를 사용하여 버튼이 클릭되었을 때 if_click_login('hi') 함수를 호출하도록 설정하였습니다. 그러나 JavaScript 코드에서 if_click_login() 함수는 매개변수를 받지 않도록 정의되어 있습니다. 따라서 브라우저가 if_click_login('hi')를 호출할 때 매개변수가 필요 없는 함수를 호출하려고 시도하게 되어 오류가 발생하는 것입니다.

    그럼 'HI'를 호출 하고 싶으면 어떻게 해야될까 ❓

    이를 해결하기 위해서는 if_click_login() 함수를 매개변수를 받을 수 있도록 수정해야 합니다. 그리고 HTML 코드에서 onclick 이벤트 핸들러를 호출할 때 필요한 매개변수를 전달해야 합니다.

    따라서 JavaScript 코드를 수정하여 if_click_login() 함수가 매개변수를 받도록 만들고, HTML 코드에서도 해당 매개변수를 전달하도록 해야 합니다. 이렇게 하면 오류가 발생하지 않고 원하는 기능을 구현할 수 있습니다.

    // login.js 
    function if_click_login(message){
        alert('1');
        alert(message); // 전달받은 메시지 출력
    }

     

    이렇게 한 뒤 경고창 '1'이 나타나고

     

    'HI' 까지 잘 나타나는 것을 볼 수 있습니다. 

     

     

    ❓왜 스크립트는 바디 맨 끝에 쓰나?

    스크립트를 <body> 요소 맨 끝에 작성하는 것은 페이지 로딩 속도를 향상시키고 사용자 경험을 개선하는 데 도움이 되며, 코드 관리를 보다 용이하게 만듭니다.

Designed by Tistory.