바이브코딩 오류 해결 노트

버튼을 눌러도 아무 일도 안 일어날 때 확인할 것

바이브빌더 2026. 5. 11. 12:00

버튼을 눌러도 아무 일도 안 일어날 때 확인할 것

1. 버튼 클릭이 먹통처럼 보이는 이유

버튼을 눌렀는데 화면이 조용하면 많은 분이 "코드가 전부 망가졌나?"부터 떠올립니다. 하지만 실제로는 작은 연결 문제인 경우가 더 많습니다. 특히 초보 단계에서는 버튼 자체가 고장 난 것이 아니라, 버튼과 JavaScript 함수가 서로 만나지 못한 상태가 대부분입니다.

예를 들어 클릭 이벤트를 등록했는데 스크립트 파일 경로가 틀렸거나, HTML에서 사용한 id 이름과 JavaScript에서 찾는 id가 다르면 아무 일도 일어나지 않습니다. 또 콘솔에 에러가 떠도 화면에서는 조용해 보이기 때문에 문제를 늦게 발견하기 쉽습니다. 그래서 "왜 안 되지?"라고 오래 고민하기보다, 정해진 점검 순서를 따라가면 훨씬 빨리 해결됩니다.

2. 가장 먼저 보는 체크리스트

아래 순서대로 확인하면 대부분 10분 안에 원인이 보입니다. 핵심은 감으로 추측하지 않고 한 단계씩 검증하는 것입니다.

확인 항목 무엇을 확인하나 빠른 조치
스크립트 로드 <script src> 경로, 파일명, 오타 여부 개발자도구 Network/Console에서 404 확인
요소 선택자 getElementById/querySelector 대상이 실제 존재하는지 HTML id/class와 JS 선택자 문자 하나까지 대조
이벤트 연결 addEventListener('click', ...)가 실행되었는지 콜백 첫 줄에 console.log('clicked') 넣기
가림 레이어 보이지 않는 요소가 버튼을 덮는지 Elements 탭에서 z-index, position, pointer-events 점검
에러 중단 이전 코드 에러로 뒤쪽 코드가 멈추는지 콘솔의 첫 번째 에러부터 해결

3. 실전 점검 순서와 수정 예시

1) 콘솔 로그로 클릭 자체를 확인

먼저 버튼 클릭 시 로그가 찍히는지 확인합니다. 로그가 안 찍히면 이벤트가 연결되지 않은 상태입니다. 로그가 찍히면 연결은 성공이고, 그다음 로직에서 문제가 생긴 것입니다. 이 한 줄만으로 점검 범위를 절반 이상 줄일 수 있습니다.

2) DOM 로드 시점 문제 확인

자주 나오는 원인은 스크립트가 너무 빨리 실행되는 경우입니다. HTML 요소가 생성되기 전에 JavaScript가 버튼을 찾으려고 하면 null이 나옵니다. 이때는 script 태그를 body 맨 아래로 이동하거나 DOMContentLoaded 안에서 이벤트를 연결하면 안정적으로 동작합니다.

3) 동일 id 중복 여부 점검

복붙 작업을 하다 보면 id가 중복될 수 있습니다. id는 페이지에서 유일해야 하므로, 중복되면 의도하지 않은 요소가 선택됩니다. 버튼이 여러 개인 상황이라면 class 선택 후 반복문으로 이벤트를 붙이는 방식이 더 안전합니다.

4) CSS로 클릭이 막히는 경우 점검

버튼은 보이는데 클릭이 안 된다면, 투명한 오버레이가 위를 덮고 있을 가능성이 큽니다. 특히 모달, 헤더, 고정 배너 작업 후 자주 발생합니다. 이 경우 요소 경계선을 보면서 누가 위에 올라와 있는지 확인하고 z-index 또는 pointer-events를 조정하면 해결됩니다.

4. 다시 같은 문제를 막는 습관

문제를 한 번 해결한 뒤에는 재발 방지 루틴을 만들어 두는 것이 중요합니다. 첫째, 버튼을 만들면 바로 클릭 로그를 붙여 기본 동작을 검증하세요. 둘째, 파일명을 바꿨다면 script 경로를 함께 수정하는 체크리스트를 유지하세요. 셋째, 큰 레이아웃 변경 후에는 주요 버튼을 한 번씩 수동 테스트하세요.

그리고 AI에게 수정을 요청할 때는 "안 돼요"라고만 쓰기보다, 콘솔 에러 문구와 현재 코드 일부를 함께 전달하면 정확도가 크게 올라갑니다. 즉, 증상 + 재현 조건 + 에러 메시지를 같이 제공하는 습관이 디버깅 속도를 결정합니다.

5. 자주 묻는 질문

Q1. 콘솔에 에러가 없는데도 버튼이 안 눌려요.

A. CSS 레이어 충돌 가능성이 큽니다. 개발자도구에서 해당 버튼 위에 다른 요소가 겹쳐 있는지, pointer-events가 막혀 있는지 먼저 확인하세요.

Q2. onclick 속성으로 할까요, addEventListener로 할까요?

A. 유지보수 관점에서는 addEventListener가 더 안전합니다. 코드 분리가 쉽고, 같은 요소에 이벤트를 여러 개 붙일 때도 유연하게 관리할 수 있습니다.

Q3. AI가 준 코드가 안 되면 어떻게 요청해야 하나요?

A. "버튼 id", "콘솔 에러 원문", "현재 HTML/JS 일부", "원하는 동작" 네 가지를 함께 주면 수정 품질이 크게 좋아집니다. 재현 가능한 정보가 많을수록 정확한 답을 받습니다.