일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 투두앱만들기
- 리액트
- 불변성
- 상속
- Zustand
- CSS
- webdevelopment
- 클래스
- 부트캠프
- js
- Hooks
- 객체지향프로그래밍
- 노마드코더
- 프론트엔드
- Props
- typeScript
- github
- 논리연산자
- 자바스크립트
- frontend
- 타입스크립트
- 웹개발
- 추상화
- 패스트캠퍼스
- OOP
- REACT
- 캡슐화
- 자바스트립트
- JavaScript
- Fetch
- Today
- Total
connecting dots
nomadcoder - Javascript | login form 만들기 본문

const loginForm = document.querySelector("#login-form");
document에서 id가 login-form인 요소를 찾아 loginForm이라는 변수에 할당
const loginButton = document.querySelector('.login-form');
const loginButton = loginForm.querySelector("button");
위 두 코드는 같은 의미를 지니는데
1) document에서 class가 login-form인 요소를 찾아 lodginButton이라는 변수에 할당
2) loginForm에서 button을 찾아 loginButton이라는 변수에 할당
--> html을 보면 <form>안에 <button>이 있는 구조를 가지고 있음
💡 _______.querySelector에서 _______ 부분에는 document만 들어갈 수 있는 것이 아니고
'어디'에서 찾는다는 정보를 넣는 것이라는 것을 알게 되었다 ! (loginForm에서 찾을 땐 그걸 넣어주는 것 처럼)
document.getElementById
document.getElementsByClassName
document.getElementsByTagName
document.querySelector
document.querySelectorAll
💡 getElementId와 querySelector, querySelectorAll만 알고 있었는데 더 다양한 것들이 있었다

addEventListener로 submit 이벤트가 발생할 때 onLoginSubmit 함수가 호출되도록 만든 로직
여기서 onLoginSubmit 함수에 event parameter를 넣어준 뒤 console 에서 확인해보자

--> 현재 event에 대한 정보를 담은 객체데이터를 볼 수 있다 !
💡 자바스크립트는 함수를 실행시킴과 동시에 첫 번째 인자로 객체를 넣어준다
그 객체에는 방금 일어난 event에 대한 여러 정보가 담겨 있다.
loginForm.addEventListener("submit", onLoginSubmit());
--> 이런 식으로 ()를 넣어 함수를 바로 실행시키는 방식을 사용하면 안됨 !

<a>의 기본 동작은 그 링크로 이동하는 것인데 event.preventDefault()를 사용해서 기본 행동을 막아서
a태그 부분을 클릭해도 이동하지 않는 모습 !
<a href="https://nomadcoders.co/">Go to courses</a>


.hidden {
display: none;
}

input에 값을 입력하고 엔터를 누르면 form요소는 사라지게 만들고 h1 요소가 나타나게 만들기

💡 classList 객체는 여러 가지 유용한 메서드를 제공하여 요소의 클래스 목록을 쉽게 추가, 제거, 토글 및 확인할 수 있다. 이 프로퍼티는 Element 인터페이스의 표준 프로퍼티로 모든 HTML 요소에서 사용할 수 있다.
주요 메서드와 사용 예제
1. add: 하나 이상의 클래스를 추가합니다.
2. remove: 하나 이상의 클래스를 제거합니다.
3. toggle: 클래스가 존재하면 제거하고, 존재하지 않으면 추가합니다.
4. contains: 클래스가 존재하는지 여부를 확인합니다.
5. replace: 특정 클래스를 다른 클래스로 교체합니다.
💡 innerText 프로퍼티는 HTML 요소의 텍스트 콘텐츠를 설정하거나 가져오는 데 사용된다. innerText를 사용하면 요소의 모든 자식 요소를 포함한 텍스트 내용을 읽거나 변경할 수 있다. 텍스트를 설정할 때는 원하는 문자열을 입력할 수 있으며, 해당 문자열은 요소의 텍스트 콘텐츠로 반영된다.


--> onLoginSubmit 함수가 실행되면 form에는 hidden 추가, a에는 hidden 삭제
innerText로 텍스트 콘텐츠 설정한 것이 들어가는 것이 잘 보이고 있음
💡 local storage는 브라우저에 무엇인가를 저장할 수 있다. 정보를 저장하고 불러오고 삭제하는 브라우저의 작은 DB 같은 API ! 개발자도구의 application에서 볼 수 있다. local storage에 없는 값을 불러오려고 하면 null이 나온다.


예제

input에 값을 넣고 엔터를 누르면 submit 이벤트가 발생한다. 이때 onLoginSubmit 함수가 실행된다
--> event.preventDefault()로 브라우저의 기본 동작을 막아주고
--> loginForm에 hidden class 추가해서 숨겨준다
--> 입력받은 값을 userName에 저장해주고 로컬 스토리지에 저장한다
--> greeting에 hidden class를 삭제하고 innerText로 문장을 넣어준다.

전체 코드


https://developer.mozilla.org/ko/docs/Web/API/Window/localStorage
Window.localStorage - Web API | MDN
localStorage 읽기 전용 속성을 사용하면 Document 출처의 Storage 객체에 접근할 수 있습니다. 저장한 데이터는 브라우저 세션 간에 공유됩니다. localStorage는 sessionStorage와 비슷하지만, localStorage의 데이
developer.mozilla.org
'Project > Mini Project' 카테고리의 다른 글
nomadcoder | Todo App 만들기 프로젝트 - 피드백과 리팩토링 🙇🏻♀️ (0) | 2024.08.13 |
---|---|
nomadcoder | Todo App 만들기 프로젝트 ✓ (0) | 2024.08.12 |