[JS 5강] 실전! 이벤트 리스너와 미니 계산기 만들기

"클릭하면 반응하는 진짜 웹사이트! 지금까지 배운 모든 기술을 하나로 합쳐봅시다."

안녕하세요! 드디어 자바스크립트 기초 시리즈의 마지막 시간입니다. 지난 4강에서 HTML 요소를 선택하고 바꾸는 법을 배웠다면, 오늘은 사용자가 클릭하거나 글을 입력할 때 그 동작을 감지하는 이벤트 리스너(Event Listener)를 배우고, 직접 작동하는 미니 계산기를 만들어보겠습니다.

1. 사용자의 동작을 감시하라: 이벤트 리스너

웹사이트에서 일어나는 모든 동작(클릭, 스크롤, 키보드 입력 등)을 '이벤트'라고 합니다. 자바스크립트는 이 이벤트를 기다리고 있다가 발생하면 특정 함수를 실행합니다.

click: 요소를 클릭했을 때

submit: 폼(Form) 데이터를 전송할 때

keyup: 키보드에서 손을 뗐을 때

2. 이벤트 리스너 사용법 (addEventListener)

HTML 태그에 직접 onclick을 쓰는 것보다 자바스크립트 파일에서 연결하는 방식이 훨씬 깔끔하고 강력합니다.

const btn = document.querySelector('#myBtn'); // 버튼을 클릭했을 때 실행할 동작 등록 btn.addEventListener('click', function() { alert("버튼이 클릭되었습니다!"); });

3. [실습] 미니 더하기 계산기 만들기

두 개의 숫자를 입력받아 더한 결과를 보여주는 프로그램을 완성해봅시다.

<!-- HTML 구조 --> <input type="number" id="num1" placeholder="숫자 1"> <span> + </span> <input type="number" id="num2" placeholder="숫자 2"> <button id="calcBtn">계산하기</button> <p>결과: <span id="result">0</span></p> <script> const button = document.querySelector('#calcBtn'); button.addEventListener('click', () => { // 1. 입력창의 값 가져오기 const v1 = document.querySelector('#num1').value; const v2 = document.querySelector('#num2').value; // 2. 숫자로 변환하여 더하기 (입력값은 기본적으로 문자열임) const sum = Number(v1) + Number(v2); // 3. 결과 화면에 뿌려주기 document.querySelector('#result').innerText = sum; }); </script>

🎉 자바스크립트 기초 연재 완강!

HTML로 뼈대를 세우고, CSS로 옷을 입히고, JS로 생동감을 불어넣는 법까지 모두 배우셨습니다.

[JS 4강] HTML을 내 마음대로! DOM 조작 기초

"자바스크립트로 웹페이지의 글자, 색상, 구조를 실시간으로 바꿔봅시다."

안녕하세요! 지난 3강에서는 함수를 통해 코드를 효율적으로 묶는 법을 배웠습니다. 오늘은 자바스크립트의 진정한 힘, 바로 웹페이지의 구성 요소들을 마음대로 주무르는 DOM(Document Object Model) 조작에 대해 알아보겠습니다.

1. DOM이란 무엇인가요?

DOM은 브라우저가 HTML 문서를 자바스크립트가 이해할 수 있는 객체(Object) 형태로 만든 지도와 같습니다. 이 지도를 통해 우리는 특정 태그를 찾고, 내용을 바꾸고, 스타일을 수정할 수 있습니다.

선택: "id가 'title'인 태그를 가져와줘"

수정: "그 태그의 글자를 '반가워요'로 바꿔줘"

스타일: "그 태그의 배경색을 노란색으로 해줘"

2. 요소를 선택하고 바꾸는 핵심 명령어

가장 자주 쓰이는 두 가지 방식만 기억해도 충분합니다.

  • 🔍 document.getElementById('아이디'): 특정 ID를 가진 요소를 하나 선택합니다.
  • 🔍 document.querySelector('.클래스'): CSS 선택자 방식으로 요소를 선택합니다.

3. DOM 조작 실습 예제

HTML에 있는 요소를 자바스크립트로 직접 제어하는 과정을 살펴보세요.

<!-- HTML 구조 --> <h1 id="main-title">원래 제목입니다</h1> <button onclick="changeText()">제목 바꾸기</button> <script> function changeText() { // 1. 요소를 찾아서 변수에 담기 const title = document.getElementById('main-title'); // 2. 내용 바꾸기 (innerText) title.innerText = "자바스크립트로 바뀐 제목!"; // 3. 스타일 바꾸기 (style) title.style.color = "#f1c40f"; title.style.backgroundColor = "#222"; title.style.padding = "10px"; } </script>

4. 클래스 제어하기 (classList)

스타일을 하나씩 바꾸는 것보다, 미리 만들어둔 CSS 클래스를 꼈다 뺐다 하는 것이 더 효율적입니다.

요소.classList.add('active'); - 클래스 추가
요소.classList.remove('active'); - 클래스 제거
요소.classList.toggle('active'); - 클래스가 있으면 제거, 없으면 추가

화면을 움직이게 하는 첫 단추!

DOM 조작을 할 줄 안다는 것은 이제 진짜 '웹 앱'을 만들 준비가 되었다는 뜻입니다.

마지막 5강에서는 클릭과 같은 사용자의 동작에 반응하는 '이벤트 리스너'를 배워볼게요!

[JS 3강] 코드를 재사용하자! 함수(Function)의 마법

"반복되는 코드를 하나로 묶어 효율적으로 관리하는 방법을 배워봅시다."

안녕하세요! 지난 2강에서는 조건문과 반복문을 통해 프로그램의 흐름을 제어하는 법을 배웠습니다. 오늘은 똑같은 코드를 여러 번 복사해서 붙여넣지 않고, 필요할 때마다 꺼내 쓸 수 있게 만드는 함수(Function)에 대해 알아보겠습니다.

1. 함수란 무엇인가요?

함수는 특정한 작업을 수행하도록 설계된 코드의 묶음입니다. 한 번 만들어두면 원할 때마다 이름을 불러 실행할 수 있습니다.

재사용성: 똑같은 코드를 반복해서 쓸 필요가 없습니다.

유지보수: 함수 내용만 수정하면 사용된 모든 곳에 적용됩니다.

구조화: 코드가 읽기 쉽고 깔끔해집니다.

2. 함수의 구조 (매개변수와 반환값)

함수는 값을 받아서(Input) 처리한 뒤 결과(Output)를 돌려줍니다.

  • 📥 매개변수(Parameter): 함수 외부에서 전달받는 값
  • 📤 반환값(Return): 함수 실행 결과를 외부로 내보내는 값

3. 함수 정의와 활용 실습

전통적인 함수 방식과 최신 자바스크립트에서 많이 쓰이는 화살표 함수 방식을 모두 익혀보세요.

// 1. 기본 함수 선언식 function sayHello(name) { return "안녕하세요, " + name + "님!"; } // 함수 호출하기 console.log(sayHello("철수")); // "안녕하세요, 철수님!" console.log(sayHello("영희")); // "안녕하세요, 영희님!" // 2. 값을 계산해서 돌려주는 함수 function add(a, b) { return a + b; } let result = add(10, 20); console.log("더하기 결과:", result); // 30 // 3. 화살표 함수 (최신 문법) const multiply = (x, y) => { return x * y; }; console.log("곱하기 결과:", multiply(5, 4)); // 20

코딩의 효율성이 올라갔습니다!

함수를 잘 만드는 것이 진정한 프로그래머로 가는 지름길입니다. 작은 기능부터 함수로 만들어보세요.

다음 4강에서는 자바스크립트로 웹페이지를 직접 제어하는 'DOM 조작 기초'를 배워볼게요!

[JS 2강] 똑똑한 웹사이트의 비결! 조건문과 반복문 마스터하기

"상황에 따라 판단하고, 복잡한 일을 대신 반복해주는 로직을 배워봅시다."

안녕하세요! 지난 1강에서는 변수를 통해 데이터를 저장하는 법을 배웠습니다. 오늘은 그 데이터를 활용해 웹사이트가 스스로 판단(조건문)하게 만들고, 귀찮은 일을 반복(반복문)시키는 방법을 알아보겠습니다.

1. 상황에 따라 다르게 실행하기: 조건문(if)

조건문은 "만약 ~라면 A를 하고, 아니면 B를 해라"라고 컴퓨터에게 명령하는 것입니다.

if: 조건이 참(true)일 때 실행

else if: 앞의 조건이 아닐 때 새로운 조건 확인

else: 모든 조건에 해당하지 않을 때 실행

2. 여러 번 대신 일해주는: 반복문(for)

같은 동작을 10번, 100번 반복해야 할 때 반복문을 사용하면 코드가 아주 간결해집니다.

  • 🔁 for문: 가장 대표적인 반복문으로, 반복 횟수가 정해져 있을 때 주로 사용합니다.
  • 🔁 while문: 특정 조건이 참인 동안 계속해서 반복합니다.

3. 조건문과 반복문 실습

브라우저 콘솔(F12)에서 아래 로직을 연습해 보세요. 숫자만 바꿔도 결과가 달라지는 것을 확인할 수 있습니다.

// 1. 조건문 실습: 성적 계산기 let score = 85; if (score >= 90) { console.log("등급: A"); } else if (score >= 80) { console.log("등급: B"); // 출력됨! } else { console.log("등급: C"); } // 2. 반복문 실습: 1부터 5까지 출력하기 console.log("--- 숫자를 세어보자 ---"); for (let i = 1; i <= 5; i++) { console.log("현재 숫자:", i); } // 3. 반복문으로 구구단 2단 만들기 console.log("--- 구구단 2단 ---"); for (let j = 1; j <= 9; j++) { console.log("2 x", j, "=", 2 * j); }

로직의 기초를 다지셨습니다!

조건문과 반복문은 모든 프로그래밍 언어의 심장과 같습니다. 꼭 눈으로만 보지 말고 직접 코드를 쳐보세요.

다음 3강에서는 코드를 재사용할 수 있게 만드는 '함수(Function)'를 배워볼게요!

[JS 1강] 웹사이트가 생각하게 만들기! 자바스크립트 시작과 변수 이해하기

"정적인 페이지에 생명력을 불어넣는 마법, 자바스크립트를 시작합니다."

안녕하세요! 드디어 웹 개발의 꽃이라 불리는 자바스크립트(JavaScript) 연재를 시작합니다. HTML이 뼈대이고 CSS가 옷이라면, 자바스크립트는 웹사이트의 '두뇌' 역할을 합니다.

1. 자바스크립트란 무엇인가요?

자바스크립트는 사용자와 상호작용하고, 데이터를 처리하며, 화면을 동적으로 바꾸는 프로그래밍 언어입니다.

클릭하면 색이 변하는 버튼

입력한 값에 따라 결과가 나오는 계산기

서버에서 데이터를 받아와 화면에 뿌려주는 기능

2. 데이터를 담는 바구니: 변수(Variable)

컴퓨터에게 정보를 기억시키려면 '이름이 붙은 바구니'가 필요합니다. 이것을 변수라고 부릅니다.

  • 📌 const: 한 번 담으면 바꿀 수 없는 상자 (상수)
  • 📌 let: 언제든 내용을 바꿀 수 있는 상자 (변수)
  • * 예전에는 'var'를 썼지만, 요즘은 'let'과 'const'를 권장합니다.

3. 브라우저 콘솔과 실습

브라우저(크롬 등)에서 F12를 누르고 Console 탭을 열어보세요. 아래 코드를 입력하고 엔터를 치면 결과를 확인할 수 있습니다.

// 1. 변수 선언하기 const name = "코딩천재"; // 문자형 (String) let age = 20; // 숫자형 (Number) const isHappy = true; // 불리언 (Boolean: 참/거짓) // 2. 콘솔에 출력하기 console.log("이름:", name); console.log("나이:", age); // 3. 변수 값 바꿔보기 age = 21; // let으로 선언해서 변경 가능! console.log("내년 나이:", age); // 4. 간단한 연산 const a = 10; const b = 5; console.log("더하기:", a + b);

첫 걸음을 떼셨습니다!

프로그래밍의 시작은 데이터를 정의하는 것부터입니다. 변수의 개념을 꼭 기억하세요.

다음 2강에서는 상황에 따라 판단하는 '조건문과 반복문'을 배워볼게요!

[CSS 2강] 누구를 꾸밀까요? 선택자와 박스 모델 완벽 이해

"원하는 요소를 선택하고 크기를 조절하는 CSS의 핵심을 배워봅시다."

안녕하세요! 지난 1강에서는 CSS를 연결하는 법을 배웠습니다. 오늘은 내가 원하는 부분만 콕 집어서 스타일을 입히는 선택자(Selector)와, 웹사이트의 모든 요소를 사각형 박스로 이해하는 박스 모델(Box Model)을 알아보겠습니다.

1. 기본 선택자 (누구를 꾸밀 것인가?)

CSS에서 가장 많이 쓰이는 세 가지 선택자입니다. 상황에 맞게 골라 쓰는 것이 중요합니다.

태그 선택자: 특정 태그 전체 (예: h1 { ... })

클래스 선택자(.): 여러 번 재사용할 그룹 (예: .box { ... })

아이디 선택자(#): 단 하나뿐인 고유 요소 (예: #logo { ... })

2. 모든 요소는 박스다! 박스 모델

웹사이트의 모든 태그는 사각형 박스로 이루어져 있습니다. 이 박스의 크기를 결정하는 4가지 요소를 기억하세요.

  • 📦 Content: 텍스트나 이미지가 들어가는 실제 내용 영역
  • 📏 Padding: 테두리와 내용 사이의 안쪽 여백
  • 🖼️ Border: 요소의 테두리(선)
  • 🚀 Margin: 다른 요소와의 간격인 바깥쪽 여백

3. 선택자와 박스 모델 예제 (실습)

아래 코드를 통해 클래스 선택자를 사용하고 박스의 여백을 조절하는 법을 확인해 보세요.

/* 클래스 선택자로 꾸미기 */ .my-box { width: 300px; /* 가로 너비 */ background-color: #ffffff; border: 2px solid #3498db; /* 파란색 테두리 */ /* 박스 모델 설정 */ padding: 20px; /* 안쪽 여백 */ margin: 30px; /* 바깥쪽 여백 */ /* 꿀팁: 테두리까지 크기에 포함하기 */ box-sizing: border-box; } /* 태그 선택자로 글자 꾸미기 */ p { color: #555; line-height: 1.5; }

레이아웃의 기본기 완료!

MarginPadding의 차이만 명확히 알아도 디자인이 훨씬 깔끔해집니다.

다음 3강에서는 페이지를 더욱 아름답게 만드는 '폰트와 텍스트 스타일'을 알아볼게요!

[CSS 1강] 웹사이트에 색을 입히다! CSS 정의와 연동 방법 3가지

"뼈대 위에 예쁜 옷을 입혀볼 시간입니다."

안녕하세요! 지난 HTML 시리즈를 통해 웹사이트의 뼈대를 세우는 법을 배우셨나요? 이제는 그 밋밋한 뼈대에 색을 입히고 디자인을 더해줄 CSS(Cascading Style Sheets)를 배울 차례입니다.

1. CSS란 무엇인가요?

CSS는 HTML로 만든 문서의 스타일(디자인)을 담당하는 언어입니다. 배경색, 글꼴, 크기, 위치 등을 조절하여 사용자에게 보기 좋은 화면을 만들어줍니다.

HTML: "여기에 제목과 본문을 배치해줘" (구조)

CSS: "제목은 파란색으로, 본문은 나눔고딕체로 해줘" (디자인)

2. CSS를 적용하는 3가지 방법

HTML 문서에 CSS를 입히는 방법은 크게 세 가지가 있습니다.

  • ① 인라인 스타일(Inline Style): 태그 안에 직접 씀 (추천하지 않음)
    <h1 style="color: red;">
  • ② 내부 스타일 시트(Internal Style): <head> 안에 <style> 태그로 작성
    - 한 페이지에만 스타일을 적용할 때 유용
  • ③ 외부 스타일 시트(External Style): 별도의 .css 파일을 만들어 연결 (가장 추천!)
    - 여러 페이지에 동일한 디자인을 적용할 때 필수

3. 외부 스타일 시트 연결하기 (실습)

가장 실무적인 방법인 **외부 스타일 시트 연결법**을 실습해 봅시다. HTML 파일의 <head> 섹션에 아래 코드를 추가하세요.

<!-- HTML 파일 (index.html) --> <head> <link rel="stylesheet" href="style.css"> </head> <!-- CSS 파일 (style.css) --> body { background-color: #f0f2f5; /* 배경색 변경 */ } h1 { color: #ff4757; /* 제목 색상 변경 */ text-align: center; /* 가운데 정렬 */ } p { font-size: 18px; /* 글자 크기 변경 */ color: #333; }

CSS 공부의 시작!

CSS를 연결할 줄 안다면 이제 웹 디자이너의 길에 들어선 것입니다.

다음 2강에서는 원하는 요소만 골라서 꾸미는 '선택자와 박스 모델'을 배워볼게요!

[5강] 실전! HTML로 만드는 나만의 미니 포트폴리오

"배운 모든 기술을 하나로! 나만의 첫 웹페이지를 완성해봅시다."

안녕하세요! 드디어 HTML 기초 연재의 마지막 시간입니다. 그동안 배운 기본 구조, 시맨틱 태그, 멀티미디어, 그리고 Form까지 모두 활용하여 간단하지만 멋진 '나만의 포트폴리오' 페이지를 만들어 보겠습니다.

1. 포트폴리오 설계하기

우리가 만들 페이지는 다음과 같은 구조를 가집니다.

📍 상단(Header): 이름과 간단한 메뉴

📍 본문(Main): 자기소개, 이미지, 기술 스택 목록

📍 연락처(Section): 문의하기 폼

📍 하단(Footer): 저작권 정보

2. 전체 코드 (실습)

아래 코드를 모두 복사해서 새 HTML 파일로 저장한 뒤 브라우저로 열어보세요. 여러분의 정보를 넣어 수정하면 더욱 좋습니다!

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>김철수의 포트폴리오</title> </head> <body> <!-- 헤더: 사이트의 제목과 내비게이션 --> <header> <h1>Welcome to My Space</h1> <nav> <a href="#about">소개</a> | <a href="#contact">연락처</a> </nav> </header> <hr> <!-- 메인: 핵심 콘텐츠 --> <main id="about"> <section> <h2>About Me</h2> <img src="profile.jpg" alt="내 프로필 사진" width="200"> <p>안녕하세요! 웹 개발을 공부하고 있는 <strong>김철수</strong>입니다.</p> </section> <section> <h3>My Skills</h3> <ul> <li>HTML5 구조 설계</li> <li>시맨틱 마크업</li> <li>기초 웹 접근성</li> </ul> </section> </main> <hr> <!-- 연락처 섹션 --> <section id="contact"> <h2>Contact Me</h2> <form> <label>이름: <input type="text" name="name"></label><br><br> <label>메시지: <br> <textarea name="message" rows="4" cols="30"></textarea> </label><br> <button type="submit">보내기</button> </form> </section> <!-- 푸터 --> <footer> <p>© 2024 Chulsoo Kim. All rights reserved.</p> </footer> </body> </html>

축하합니다! HTML 기초 완강!

이제 여러분은 웹의 구조를 스스로 설계할 수 있는 기초 체력을 길렀습니다.

[4강] 사용자 소통의 창구! Form 태그와 입력 양식

"유저의 데이터를 수집하고 소통하는 방법을 배워봅시다."

안녕하세요! 지난 시간까지는 정보를 보여주는 방법을 배웠다면, 오늘은 사용자의 정보를 입력받는 'Form(폼)'에 대해 알아보겠습니다. 회원가입, 로그인, 설문조사 등이 모두 이 기능을 통해 이루어집니다.

1. Form 태그의 역할과 속성

데이터를 서버로 보내기 위한 바구니 역할을 합니다. 가장 중요한 두 가지 속성이 있습니다.

action: 데이터를 전달받을 서버의 주소를 지정합니다.

method: 전달 방식 (GET: 주소창에 노출 / POST: 본문 뒤에 숨겨서 전송)

2. 다양한 입력 양식 (Input Types)

<input> 태그의 type 속성을 바꾸는 것만으로 다양한 모양을 만들 수 있습니다.

  • 📝 text / password: 아이디와 비밀번호 입력창
  • 🔘 radio / checkbox: 여러 항목 중 하나 또는 여러 개 선택
  • 📅 date: 날짜 선택 캘린더 표시
  • 🚀 submit: 작성을 마치고 서버로 전송하는 버튼

3. 간단한 문의하기 폼 예제 (실습)

사용자로부터 이름과 메일 수신 동의를 받는 폼 예시입니다. <label> 태그를 사용하면 글자를 클릭해도 입력창이 선택되어 편리합니다.

<form action="/submit-data" method="POST"> <!-- 이름 입력 --> <label for="userName">이름:</label> <input type="text" id="userName" name="name" placeholder="이름을 입력하세요"> <br><br> <!-- 관심 분야 선택 --> <p>관심 분야:</p> <label> <input type="checkbox" name="interest" value="coding"> 코딩 </label> <label> <input type="checkbox" name="interest" value="design"> 디자인 </label> <br><br> <!-- 전송 버튼 --> <input type="submit" value="문의하기"> </form>

상호작용의 핵심, Form!

복잡해 보이지만 typename 속성만 잘 기억하면 어떤 입력창도 만들 수 있습니다.

드디어 마지막! 다음 5강에서는 지금까지 배운 내용을 총동원해 '나만의 포트폴리오'를 완성해 볼게요!

[3강] 텍스트와 멀티미디어! 생동감 있는 페이지 만들기

"이미지와 비디오로 독자의 시선을 사로잡는 법을 배워봅시다."

안녕하세요! 지난 시간에는 검색 엔진이 좋아하는 시맨틱 태그를 배웠습니다. 오늘은 웹페이지에 생동감을 불어넣는 텍스트 강조 기술멀티미디어(이미지, 비디오) 삽입 방법을 알아보겠습니다.

1. 텍스트를 풍성하게 만드는 태그

단순한 글자 나열보다 적절한 강조와 목록을 사용하면 가독성이 훨씬 좋아집니다.

<h1> ~ <h6>: 제목 태그 (중요도에 따라 순차적 사용)

<strong>, <em>: 중요한 텍스트를 굵게 또는 기울임으로 강조

<ul>, <ol>, <li>: 순서 없는 목록과 순서 있는 목록 생성

2. 멀티미디어 삽입하기 (이미지 & 비디오)

웹사이트에 시각적인 요소를 추가할 때 사용하는 핵심 태그들입니다.

  • 🖼️ <img> 태그: 이미지를 표시합니다.
    - src: 이미지 경로 / alt: 이미지가 안 나올 때 보여줄 대체 텍스트(SEO 중요!)
  • 🎥 <video> 태그: 동영상을 재생합니다.
    - controls: 재생바 표시 / autoplay: 자동 재생 / loop: 반복 재생

3. 텍스트와 미디어 활용 예제 (실습)

아래 코드를 통해 실제 이미지를 불러오고 비디오를 제어하는 방법을 확인해 보세요.

<!-- 텍스트와 이미지 삽입하기 --> <h2>내가 여행한 제주도</h2> <p>제주도는 정말 <strong>아름다운 섬</strong>입니다.</p> <img src="jeju.jpg" alt="제주도 바다 풍경" width="400"> <h3>제주도 여행 코스</h3> <ul> <li>협재 해수욕장</li> <li>성산 일출봉</li> </ul> <!-- 비디오 삽입하기 --> <h3>여행 브이로그</h3> <video src="vlog.mp4" controls width="400"> 이 브라우저는 비디오 태그를 지원하지 않습니다. </video>

시각적인 웹사이트의 완성!

이미지의 alt 속성을 채우는 습관은 검색 엔진 최적화와 웹 접근성의 기본입니다.

다음 4강에서는 사용자로부터 정보를 입력받는 'Form 태그'를 배워볼게요!

+ Recent posts