-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpokedex.js
66 lines (51 loc) · 2.35 KB
/
pokedex.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const pokemonCount = 300;
var pokedex = {}; // {1 : {"name" : "bulbsaur", "img" : url, "type" : ["grass", "poison"], "desc" : "...."} }
window.onload = async function() {
// getPokemon(1);
for (let i = 1; i <= pokemonCount; i++) {
await getPokemon(i);
//<div id="1" class="pokemon-name">BULBASAUR</div>
let pokemon = document.createElement("div");
pokemon.id = i;
pokemon.innerText = i.toString() + ". " + pokedex[i]["name"].toUpperCase();
pokemon.classList.add("pokemon-name");
pokemon.addEventListener("click", updatePokemon);
document.getElementById("pokemon-list").append(pokemon);
}
document.getElementById("pokemon-description").innerText = pokedex[1]["desc"];
console.log(pokedex);
}
async function getPokemon(num) {
let url = "https://pokeapi.co/api/v2/pokemon/" + num.toString();
let res = await fetch(url);
let pokemon = await res.json();
// console.log(pokemon);
let pokemonName = pokemon["name"];
let pokemonType = pokemon["types"];
// let pokemonImg = pokemon["sprites"]["front_default"];
let pokemonImg = "https://assets.pokemon.com/assets/cms2/img/pokedex/detail/"+pokemon.id.toString().padStart(3, '0')+".png"
res = await fetch(pokemon["species"]["url"]);
let pokemonDesc = await res.json();
// console.log(pokemonDesc);
pokemonDesc = pokemonDesc["flavor_text_entries"][9]["flavor_text"];
pokedex[num] = {"name" : pokemonName, "img" : pokemonImg, "types" : pokemonType, "desc" : pokemonDesc};
}
function updatePokemon(){
document.getElementById("pokemon-img").src = pokedex[this.id]["img"];
//clear previous type
let typesDiv = document.getElementById("pokemon-types");
while (typesDiv.firstChild) {
typesDiv.firstChild.remove();
}
//update types
let types = pokedex[this.id]["types"];
for (let i = 0; i < types.length; i++) {
let type = document.createElement("span");
type.innerText = types[i]["type"]["name"].toUpperCase();
type.classList.add("type-box");
type.classList.add(types[i]["type"]["name"]); //adds background color and font color
typesDiv.append(type);
}
//update description
document.getElementById("pokemon-description").innerText = pokedex[this.id]["desc"];
}