poke api에서 데이터를 받아 나만의 포켓몬 도감을 만들어보다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#poke-list {
display: grid;
place-items: center;
grid-template-columns: 100px 100px 100px;
grid-column-gap: 150px;
flex-wrap: wrap;
padding: 10px;
justify-content: center;
}
.poke-card {
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
border-radius: 10px;
width: 200px;
box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
padding: 10px;
margin: 10px;
}
.poke-img {
width: 100px;
height: 100px;
}
h1 {
text-align: center;
}
.poke-id {
font-weight: bold;
}
</style>
</head>
<body>
<!-- HTML -->
<h1>나만의 포켓몬 도감</h1>
<div id="poke-list">
<!-- <div class="poke-card">
<img src="https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/1.png"
class="poke-img">
<span class="poke-id">1</span>
<span class="poke-name">이상해씨</span>
<span class="poke-species">씨앗포켓몬</span>
<span class="poke-height">키 : <span>0.7</span>m</span>
<span class="poke-weight">몸무게 : <span>6.9</span>kg</span>
</div> -->
</div>
<!-- jQuery 불러오기 -->
<script src="./js/jquery-3.7.0.js"></script>
<script>
// 키, 몸무게 정보 : https://pokeapi.co/api/v2/pokemon/1/
// 이름, 종 정보 : https://pokeapi.co/api/v2/pokemon-species/1/
// 포켓몬 도감 만들기
// 1. poke api 에서 이름, 종, 키, 몸무게 4가지 정보 가져오기
// * $.ajax() 활용
// 2. 가져온 정보를 2개의 배열에 각각 저장하기
// 3. 각 배열의 내용을 태그에 출력하기
let pokeNum = 152; // 포켓몬 몇마리 가져올지
let speciesList = []; // 이름, 종 데이터를 객체형태로 저장하는 배열
let pokemonList = []; // 키, 몸무게 데이터를 객체형태로 저장하는 배열
$("h1").after(`<p><strong>총 <span> ${pokeNum}</span>마리</strong> </p>`)
// 이름, 종 데이터
const getPokeData = (id) => {
let pokeURL = `https://pokeapi.co/api/v2/pokemon-species/${id}/`
$.ajax({
url: pokeURL,
// async 속성 : 통신방식을 비동기 or 동기처리로 변경할 수 있는 속성
// true: 비동기 / false: 동기
async: false,
success: (result) => {
// 서버로부터 응답받은 데이터는 매개변수를 만들어야 사용할 수 있다!!!
// console.log(result);
// console.log(result.names[2].name, result.genera[1].genus);
speciesList.push({
name: result.names[2].name,
genus: result.genera[1].genus
})
},
error: () => {
alert("요청실패..")
}
})
}
// 키, 몸무게 데이터
const getPokeData2 = (id) => {
let pokeURL = `https://pokeapi.co/api/v2/pokemon/${id}`
$.ajax({
url: pokeURL,
async: false,
success: (result) => {
let pokeHeight = (result.height * 0.1).toFixed(1)
let pokeWeight = (result.weight * 0.1).toFixed(1)
// console.log(result)
// console.log(`키: ${pokeHeight}m 몸무게: ${pokeWeight}kg`)
pokemonList.push({
height: pokeHeight,
weight: pokeWeight
})
}
})
}
// 포켓몬 카드를 그리는 함수
// (이름, 종), (몸무게, 키) 정보를 가지는 배열을 입력값으로 받는 함수
const drawPokemonCard = (species, pokemons) => {
for(let i = 1; i < pokeNum; i++){
getPokeData(i)
getPokeData2(i)
$("#poke-list").append(`
<div class="poke-card">
<img src="https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/${i}.png"
class="poke-img">
<span class="poke-id">${i}</span>
<span class="poke-name">${species[i-1].name}</span>
<span class="poke-species">${species[i-1].genus}</span>
<span class="poke-height">키 : <span>${pokemons[i-1].height}</span>m</span>
<span class="poke-weight">몸무게 : <span>${pokemons[i-1].weight}</span>kg</span>
</div>
`)
}
}
console.log(speciesList);
console.log(pokemonList);
drawPokemonCard(speciesList, pokemonList);
</script>
</body>
</html>
'Front-End > 4. jQuery' 카테고리의 다른 글
Ex10_광주관광지.html (0) | 2023.07.03 |
---|---|
Ex09_카카오map.html (0) | 2023.07.03 |
Ex07_비동기 통신.html (0) | 2023.06.22 |
Ex06_animate.html (0) | 2023.06.22 |
Ex05_jQuery추가삭제.html (0) | 2023.06.22 |