[Clone]オイルチューブクローンコード-動的出力JSON格納データ
14528 ワード
追加されたJavaScript機能
コード#コード#
data/dataList.json
{
"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회"
}
]
}
JSONファイルを読み込みます(main.js)
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);
displayUpNext(items)関数の作成
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);
}
ボタンイベントの追加(main.js)
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);
結果
JSONファイルの読み込みによる動的出力
ボタンイベント
今日新しく学んだもの
≪イベント|Events|ldap≫
Webブラウザは、「ある要素にイベントが発生した場合、ブラウザからの通知が受信される」と、そのイベントが発生したときに「実行されるアクション」を登録できます.
{
"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);
JSONファイルの読み込みによる動的出力
ボタンイベント
今日新しく学んだもの
≪イベント|Events|ldap≫
Webブラウザは、「ある要素にイベントが発生した場合、ブラウザからの通知が受信される」と、そのイベントが発生したときに「実行されるアクション」を登録できます.
addEventListenerメソッド
addEventListenerメソッドを使用して、DOM要素にイベントハンドラを登録します.
これはアクティブ登録方式の中で最も推奨される方法です.
addEventListenerには3つのパラメータがあります.
target.addEventListener(type, listener[, options]);
https://developer.mozilla.org/ko/docs/Web/Events
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);
Element.ClassList
タグクラスを操作する方法を使用できます.
add(String)
:クラス値の追加remove(String)
:クラス値の削除item(Number)
:インデックスを使用してクラス値を返すtoggle(String)
:クラスが存在する場合は削除、クラスが存在しない場合は追加(切り替え)contains(String)
:指定したクラス値がタグのクラス属性に存在するかどうかを検証replace(oldClass, newClass)
:既存のクラスを新しいクラスに置き換えるReference
この問題について([Clone]オイルチューブクローンコード-動的出力JSON格納データ), 我々は、より多くの情報をここで見つけました https://velog.io/@silviaoh/Clone-YouTube-Clone-코딩-JSON-저장-데이터-동적으로-출력テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol