No.1 바닐라 JS로 크롬 앱 만들기

Jetom·2021년 8월 21일
0

Javascript

목록 보기
8/25
post-thumbnail

🖥 react 공부를 잠시 접어두고 노마드코더 js 챌린지에 도전하기 위해 다시 js 강의로 넘어왔다.. 사실 통과 할 수 있을지 걱정이다.... 🙄

이론 수업은 다~~ 재끼고 실습부터 정리하겠다!


js는 기본적으로 html의 element를 조작하기 때문에 모든 것은 html에서 시작되어야한다! 우선 input 조작부터 시작해보자. momentum은 많은 input이 있어야하기 때문에 이름을 꼭 직관적이게 지어야한다. (momentum은 아래의 사진과 같다! 👇)

<!--html-->
<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Momentum</title>
</head>

<body>
  <!--login-form안에서 input과 button을 찾을 수 있게됐다!-->
    <div id="login-form">
        <input type="text" placeholder="your name?" />
        <button>Log In</button>
    </div>
    <script src="app.js"></script>
</body>

</html>
//js

//querySeletor는 id와 class 정확하게 넣어줘야하는 반면 
//getElementById는 이미 id를 사용한다는것을 알기때문에 생략가능
const loginForm = doument.getElementById("login-form");

//이렇게하면 loginForm에서부터 element를 찾을수있다.
const loginInput = loginForm.querySeletor("input");
const loginButton = loginForm.querySeletor("button");

//querySeletor로 한다면 다음과 같다.
const loginInput = document.querySelector("#login-from input");
const loginButton = document.querySelector("#login-from button");

//추후에 value를 click시 저장 할 수 있게 만들 함수이다.
//함수명이 길어도 알아볼 수 있게 만든다는게 중요하다!
function onLoginButtonClick() {
    console.log("click!");
}

loginButton.addEventListener("click", onLoginButtonClick)

input에 글씨를 입력하면 console에 글씨 그대로 출력하는 코드를 작성하려면 어떻게 해야할까? 우선 console.dir로 input 태그의 property를 찾아보자

💡 console.dir()

console.dir()개발자가 쉽게 객체의 속성을 얻을 수 있도록 콘솔에서 지정된 JavaScript 객체의 모든 속성을 볼 수 있는 방법입니다.

https://developer.mozilla.org/en-US/docs/Web/API/console/dir

//js

function onLoginButtonClick() {
  //객체의 속성을 보려고 쓰는 코드
   console.dir(loginInput); 
}

한참을 내리다보면 value라는 property가 있다. 이것은 html에 미리 저장 할 수 있으며 아래와 같이 입력하면 된다!

<!-- html -->
<body>
    <div id="login-from">
        <input value="jetom" type="text" placeholder="your name?" />
        <button>Log In</button>
    </div>
    <script src="app.js"></script>
</body>

이제 input의 내용을 가져오려면 어떤 property를 찾아야하는지 알게되었고, 이것을 활용해 vaule를 console.log 찍어야한다면 다음과 같이 활용 할 수 있다.

//js

const loginInput = document.querySelector("#login-from input");
const loginButton = document.querySelector("#login-from button");

//addEventListener의 click을 통해 click시 console.log에 input value를 가져오는것을 확인 할 수 있다.
function onLoginButtonClick() {
    console.log(loginInput.value);
}

loginButton.addEventListener("click", onLoginButtonClick);

하지만 이 코드의 문제점은 아무런 값을 입력하지 않아도 console에 찍히게 되는데 이때는 조건문을 사용하여 바꿔줄수있다.

//js

const loginInput = document.querySelector("#login-from input");
const loginButton = document.querySelector("#login-from button");

function onLoginButtonClick() {
    //loginInput.value을 username 변수로 만들어 호출하자!
    const username = loginInput.value;

    //빈 값이라면 if를 15보다 길다면 else if문을 출력한다.
    if (username === "") {
        alert("empty name!!");
    } else if (username.length > 15) {
        alert("too long!");
    }
}

loginButton.addEventListener("click", onLoginButtonClick)

(빈 값일때)

(15자를 넘어갈 때)

위의 코드도 작동을 하지만 브라우저 자체 기능에서도 최대 글자수를 15로 조절할 수도 있으므로 다음과 같이 만들 수 있다.

<!-- html -->
<!--input의 유효성 검사를 작동 시키려면 form안에 input이 있어야한다.-->
    <form id="login-from">
        <input required maxlength="15" type="text" placeholder="your name?" />
        <button>Log In</button>
    </form>
function onLoginButtonClick() {
    const username = loginInput.value;
  
	//username을 받는걸 확인하기 위해 console.log는 남겨둔다.
    console.log(username);
    // if (username === "") {
    //     alert("empty name!!");
    // } else if (username.length > 15) {
    //     alert("too long!");
    // }
}

js의 조건문을 지운 뒤 html로 만들었을 때 나오는 화면이다.

form에는 또 다른 기능으로 submit이 있는데 button을 클릭하지 않아도 엔터를 누르면 자동으로 submit을 해주는 것이다.

이제 우리는 submit을 알았고, 이것을 활용하여 form을 submit했을 때 브라우저가 새로고침하지 않고 user 정보를 저장 할 수 있게해야한다!(submit을하면 페이지는 새로고침되기 때문이다.)

profile
사람이 좋은 인간 리트리버 신혜리입니다🐶

0개의 댓글