바닐라 JS로 크롬 앱 만들기 강의 메모입니다.


alert("hi"); //알림창 출력
console.log("hi"); //콘솔 출력
const age = prompt("How old are you?"); //입력받기

const title = document.getElementById("title");
console.dir(title); //요소 모두 출력

//문자열 연결
greeting.innerText = "Hello " + username;
greeting.innerText = `Hello ${username}!`;

자바스크립트 기본 문법

데이터 타입

//자바스크립트는 카멜방식으로 작성
const vertLongVariableName = "True"; //상수, string
let a = 1; //변수, integer
var b = 2; //변수, 규칙x, 옛날방식
const a = true; //boolean
const a = null;

//배열
const nonsense = [1, 2, "hello", false, null, true, undefined, ''];
console.log(nonsense[3]);

const daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat"];
daysOfWeek.push("sun"); //추가 const지만 가능
console.log(daysOfWeek);

typeof(변수명) //변수 타입 확인
변수명 = parseInt(변수명) //변수 타입 변경

오브젝트

const player = {
    name: "Uju",
    points: 10,
    fat: true,
};
player.fat = false; //const지만 가능
player.lastName = "potato"; //const지만 가능
player.points += 15; //const지만 가능
console.log(player);

함수

//함수
function sayHello(nameOfPerson, age){
    console.log("Hello my name is " + nameOfPerson + "and I'm " + age);
}
sayHello("nico", 10);

//오브젝트 안에 함수
const player = {
    name: "nico",
    sayHello: function(){
        console.log("hello!");
    },
};
console.log(player.name);
player.sayHello();

HTML과 연동하기

HTML요소 지정하기

const title = document.getElementById("hello") //id가 hello인것 모두
const title = document.getElementByClassName("hello") //class가 hello인것 모두
const title = document.querySelector(".hello h1"); //첫번째 요소만
const title = document.querySelector(".hello:first-child h1");

이벤트 리스너 설정

//html요소 클릭이벤트
const title = document.querySelector(".hello:first-child h1");
function handleTitleClick(event){
		//event.preventDefault();
    console.log("title was clicked!");
}
title.addEventListener("click", handleTitleClick);
title.onclick = handleTitleClick; //위랑 같음
//윈도우 이벤트
function handleWindowResize() {
    document.body.style.backgroundColor = "tomato";
}
function handleWindowCopy() {
    alert("cooier!");
}
window.addEventListener("resize", handleWindowResize);
window.addEventListener("copy", handleWindowCopy);

클래스 네임 설정

클래스 네임으로 CSS 설정하기

body {
    background-color: beige;
}
h1 {
    color: cornflowerblue;
    transition:color .5s ease-in-out;
}
.clicked {
    color: tomato;
}
const h1 = document.querySelector(".hello:first-child h1");

function handleh1Click(){
    const clickedClass = "clicked";
    if(h1.classList.contains(clickedClass)){
        h1.classList.remove(clickedClass); //클래스 네임 지우기
    } else {
        h1.classList.add(clickedClass); //클래스 네임 추가
    }
}

h1.onclick = handleh1Click;
//위와 같은 코드
const h1 = document.querySelector(".hello:first-child h1");

function handleh1Click(){
    const clickedClass = "clicked";
    h1.classList.toggle(clickedClass);//있으면 지우고 없으면 추가
}

h1.onclick = handleh1Click;

기타 설정

시계

const clock = document.querySelector("h2#clock");
function getClock(){
    const date = new Date();
		//시, 분, 초를 받아오고, 글자가 2개가 아니면 앞에 0을 추가
    const hours = String(date.getHours()).padStart(2, '0');
    const minuets = String(date.getMinutes()).padStart(2, '0');
    const seconds = String(date.getSeconds()).padStart(2, '0');
    clock.innerText = `${hours}:${minuets}:${seconds}`;
}
getClock() //시계 초기화
setInterval(getClock, 1000); //1초마다 실행

이미지 삽입, 랜덤 함수

const images = ["0.jpg", "1.jpg", "2.jpg"];
const chosenImage = images[Math.floor(Math.random()*images.length)];

const bgImage = document.createElement("img");
bgImage.src = `img/${chosenImage}`;
console.log(bgImage);

document.body.appendChild(bgImage); //뒤에 삽입
//document.body.prepend(bgImage) //앞에 삽입

리스트 추가, 삭제

<form id="todo-form">
    <input type="text" placeholder="Write a To Do and Press Enter"/>
</form>
<ul id="todo-list"></ul>
const toDoForm = document.getElementById("todo-form");
const toDoInput = document.querySelector("#todo-form input")
const toDoList = document.getElementById("todo-list");

function deleteToDo(event){
    const li = event.target.parentElement; //클릭된 요소의 부모 찾기
    li.remove();
}

function paintToDo(newTodo){
    const li = document.createElement("li");
    const span = document.createElement("span");
    span.innerText = newTodo;
    const button = document.createElement("button");
    button.innerText = "X";
    button.addEventListener("click", deleteToDo)
    li.appendChild(span);
    li.appendChild(button);
    toDoList.appendChild(li);
}

function handleToDoSumbit() {
    event.preventDefault();
    const newTodo = toDoInput.value;
    toDoInput.value = "";
    console.log(newTodo, toDoInput.value);
    paintToDo(newTodo)
}

toDoForm.addEventListener("submit", handleToDoSumbit);

댓글남기기