Coder Social home page Coder Social logo

momentum's Introduction

Momentum App

nomadCoder Vanilla JS로 크롬 만들기



step1. Login Form

Solution for Submit form

: form tag는 그 자체로 submit event를 가진다. = page-reloading 문제 발생

= 브라우저의 default event를 remove 해주는 코드인 event.preventDefault();를 해주면 된다.



Login Form code review

** 함수 작성 onLoginSubmit, addEventListner - click시 함수 실행으로 작성

event를 argument로 받고 있고, event는 이벤트 리스너를 받아오는 함수의 기본 argument로 쓰인다.

  1. 페이지 리로딩을 피하기 위해 preventDefault를 해준다.

  2. loginForm, loginInput을 변수로 지정해준다. -> querySelector로 아이디 찾아서 부분 가져오기

  3. username 변수 작성 - loginInput의 value라는 요소에 username이 저장되기 때문

  4. localStorage에 username을 넣어주기 (setItem) - key, value 순으로

  5. loginForm의 classList에 "hidden" 이라는 class 추가 -> 그냥 HTML의 form 태그에 class "hidden" 바로 추가 (if else 작성 후 수정)

/*
-> hidden 이 붙으면 숨겨지고, 붙지 않으면 보이게 CSS 작성 후 추가 (display : none)
*/
  1. HTML에 h1 태그 작성, class "hidden" 지정, id "greeting" 지정

  2. greeting 변수 지정해주기 -> querySelector를 이용하여 아이디 가져오기

  3. greeting에 innerText 넣어주기

  4. greeting의 classList에서 "hidden"을 제거해주기

/*
username을 기억해서 한번 username 등록 시, greeting h1 tag의 내용을 보여주는 것이 목표 -> 나와야 함
*/
  1. if else 코드 작성하기
const HIDDEN_CLASSNAME = "hidden";

const savedUsername = localStorage.getItem("username");

if (savedUsername === null) {
  loginForm.classList.remove(HIDDEN_CLASSNAME);
  loginForm.addEventListener("submit", onLoginSubmit);
} else {
  greeting.classList.remove(HIDDEN_CLASSNAME);
  greeting.innerText(`Hello ${savedUsername} !`);
}

savedUsername 이라는 변수에 localStorage에 저장된 username을 가져온다.

-> 여기서 greeting ~ 코드는 반복되므로 함수로 따로 작성해준다.


function paintGreetings(username) {
  greeting.classList.remove(HIDDEN_CLASSNAME);
  greeting.innerText(`Hello ${username} !`);
}

if (savedUsername === null) {
  // show loginForm
  loginForm.classList.remove(HIDDEN_CLASSNAME);
  loginForm.addEventListener("submit", onLoginSubmit);
} else {
  // show greetings
  paintGreetings(savedUsername);
}

-> greeting 코드를 따로 배서 작성 후 함수 실행코드를 else 부분에 적어준다.

[전체 설명]

if 부분은 localStorage에 저장된 username이 null 즉, 존재하지 않는다면 loginForm을 보여주는 코드이고 else 부분은 greeting 부분을 보여주는 코드이다.



Login form 전체 리뷰

보여줄 부분과 보여지지 않을 부분 등 미리 구상해놔야 코드 작성할때 세세한 부분까지 다 고려해서 작성할 수 있을 것 같다.




STEPS

# STEP2. Clock 부분

# STEP3. Quote 부분

# STEP4. Background 부분

# STEP5. ToDoList 부분

# STEP6. Weather 부분

momentum's People

Contributors

leedo97y avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.