Calculator Tools Calculator Tools
Create

Pokédex

Jan 8, 2024

About this app

Pokédex - Catch 'em all!

Pokédex Pokédex Enter a Pokémon National Dex Number: Submit

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Pokédex</title>
<meta name="description" content="Pokédex - Catch 'em all!">
<meta name="keywords" content="Pokémon, Pokédex, National Dex">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.

// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
// Function to fetch Pokémon data
function fetchPokemonData(pokemonNumber) {
// API URL for Pokémon data
var apiUrl = `https://pokeapi.co/api/v2/pokemon/${pokemonNumber}/`;

// Fetch Pokémon data from API
fetch(apiUrl)
.then(response => response.json())
.then(data => {
// Display Pokémon details
displayPokemonDetails(data);
})
.catch(error => {
console.log(error);
alert('Failed to fetch Pokémon data. Please try again later.');
});
}

// Function to display Pokémon details
function displayPokemonDetails(data) {
// Get the main container
var mainContainer = document.getElementById('main-container');

// Clear the main container
mainContainer.innerHTML = '';

// Create Pokémon card
var pokemonCard = document.createElement('div');
pokemonCard.classList.add('card');

// Create Pokémon image
var pokemonImage = document.createElement('img');
pokemonImage.classList.add('card-img-top');
pokemonImage.src = data.sprites.front_default;
pokemonImage.alt = data.name;

// Create Pokémon card body
var cardBody = document.createElement('div');
cardBody.classList.add('card-body');

// Create Pokémon name
var pokemonName = document.createElement('h5');
pokemonName.classList.add('card-title');
pokemonName.textContent = capitalizeFirstLetter(data.name);

// Create Pokémon dex entry
var dexEntry = document.createElement('p');
dexEntry.classList.add('card-text');
dexEntry.textContent = data.species.flavor_text_entries[0].flavor_text;

// Create Pokémon base stats
var baseStatsContainer = document.createElement('div');
baseStatsContainer.classList.add('base-stats');

// Create total base stats
var totalStats = document.createElement('p');
totalStats.textContent = `Total Base Stats: ${calculateTotalStats(data.stats)}`;

// Append elements to the main container
mainContainer.appendChild(pokemonCard);
pokemonCard.appendChild(pokemonImage);
pokemonCard.appendChild(cardBody);
cardBody.appendChild(pokemonName);
cardBody.appendChild(dexEntry);
cardBody.appendChild(baseStatsContainer);
baseStatsContainer.appendChild(totalStats);
}

// Function to calculate total base stats
function calculateTotalStats(stats) {
var total = 0;

for (var i = 0; i < stats.length; i++) {
total += stats[i].base_stat;
}

return total;
}

// Function to capitalize first letter of a string
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}

// Event listener for form submission
document.getElementById('pokemon-form').addEventListener('submit', function(event) {
event.preventDefault();

var pokemonNumber = parseInt(document.getElementById('pokemon-number').value);

if (isNaN(pokemonNumber) || pokemonNumber < 1 || pokemonNumber > 1025) {
alert('Please enter a number between 1 and 1025.');
return;
}

fetchPokemonData(pokemonNumber);
});
});

} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>

<style>
body {
background-color: #f6f6f6;
font-family: 'Roboto', sans-serif;
color: #333;
}

.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}

.card {
border: none;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
background-color: #fff;
}

.card-img-top {
width: 100%;
height: auto;
object-fit: cover;
}

.card-title {
font-size: 24px;
margin-bottom: 10px;
}

.card-text {
font-size: 16px;
line-height: 1.5;
}

.base-stats {
margin-top: 20px;
}

.base-stats p {
font-size: 16px;
margin-bottom: 5px;
}

.form-group {
margin-bottom: 20px;
}

.form-control {
width: 100%;
padding: 10px;
font-size: 16px;
border-radius: 5px;
border: 1px solid #ccc;
outline: none;
}

.btn-primary {
background-color: #ffcc00;
border-color: #ffcc00;
color: #333;
font-size: 16px;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s, border-color 0.3s;
}

.btn-primary:hover {
background-color: #ffd633;
border-color: #ffd633;
}

@media (max-width: 576px) {
.card-title {
font-size: 20px;
}

.card-text {
font-size: 14px;
}

.base-stats p {
font-size: 14px;
}

.btn-primary {
font-size: 14px;
padding: 8px 16px;
}
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1 class="text-center">Pokédex</h1>

<form id="pokemon-form">
<div class="form-group">
<label for="pokemon-number">Enter a Pokémon National Dex Number:</label>
<input type="number" id="pokemon-number" class="form-control" min="1" max="1025" required>
</div>
<div class="text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
</body>
</html>