{
"items": [
{
"source": "./imgs/thumbnail.jpeg",
"title": "Clone Coding: YouTube Mobile Website 유튜브 모바일 웹사이트 따라 만들기 | 프론트엔드 개발자 입문편: HTML, CSS, JavaScript",
"name": "드림코딩 by 엘리",
"views": "82K views"
},
{
"source": "./imgs/thumbnail2.jpg",
"title": "매일 아침 꼭 해야하는 15분 기상 스트레칭|혈액순환, 피로회복, 신진대사 향상 (Morning stretch)",
"name": "빵느 Seoyeonprofile",
"views": "392,787회"
},
{
"source": "./imgs/thumbnail3.jpg",
"title": "🎵 오마이걸 노래모음 추천곡 🎵 (살짝 설렜어, Dolphin, 비밀정원, 다섯번째계절, 불꽃놀이, 한 발짝 두 발짝, CLOSER ..)",
"name": "박승오리 Box",
"views": "463,811회"
}
]
}
function loadJSON() {
return fetch("data/dataList.json")
.then((res) => res.json())
.then((data) => data.items)
.catch((error) => console.log);
}
loadJSON()
.then((items) => {
displayUpNext(items);
})
.catch((error) => console.log);
function createElement(items) {
// HTML 태그 생성
const li = document.createElement("li");
...
// 클래스 속성 설정
li.setAttribute("class", "item");
...
// 태그 안에 텍스트 넣기
title.innerText = items.title;
...
// 부모 태그 안에 자식 태그로 넣기
li.append(imgBox, info, button);
imgBox.append(img);
info.append(title, name, views);
button.append(i);
return li;
}
function displayUpNext(items) {
const element = items.map(createElement);
const container = document.querySelector("#list");
return container.append(...element);
}
loadJSON()
.then((items) => {
displayUpNext(items);
const moreBtn = document.querySelector(".moreBtn");
const title = document.querySelector(".title");
moreBtn.addEventListener("click", () => {
moreBtn.classList.toggle("clicked");
title.classList.toggle("clamp");
});
})
.catch((error) => console.log);
웹 브라우저는 '특정 요소에서 특정 이벤트가 발생했을 경우 브라우저로부터 통지받겠다'는 것과 해당 이벤트 발생 시 '수행할 행동'을 등록할 수 있다.
addEventListener 메소드를 이용하여 DOM 요소에 이벤트 핸들러를 등록한다.
이벤트 등록 방식 중 가장 권장되는 방법이다.
addEventListener는 세 가지 매개변수를 가진다.
target.addEventListener(type, listener[, options]);
function onButtonClick(event) {
const title = document.querySelector(".title");
this.classList.toggle("clicked"); // this : 함수 내부에서 선언되면 이벤트에 바인딩된 요소를 가리킴(=currentTarget)
title.classList.toggle("clamp");
}
const moreBtn = document.querySelector(".moreBtn");
moreBtn.addEventListener("click", onButtonClick);
태그의 클래스를 조작하는 메소드를 쓸 수 있다.
add(String)
: 클래스 값 추가remove(String)
: 클래스 값 제거item(Number)
: 인덱스를 이용하여 클래스 값 반환toggle(String)
: 클래스가 존재한다면 제거하고 존재하지 않으면 추가함(토글링)contains(String)
: 지정한 클래스 값이 태그의 class 속성에 존재하는지 확인replace(oldClass, newClass)
: 존재하는 클래스를 새로운 클래스로 교체