Spróbuj z <select> dla typu i <input type="number"> dla numeru
[ pełny kod przykładu on-line ]
<div class="container">
<select id="typ">
<option value="" selected disabled>TYP POKEMONA</option>
<option value="psychic">psychic</option>
<option value="fire">fire</option>
</select>
<input type="number" id="numer" min="1" value="1">
<label for="numer">NUMER POKEMONA</label>
<button onclick="wypisz()">TO?</button>
<div id="display"></div>
</div>
const pokemon = {
psychic: [ null, 'espurr', 'meowstic', 'abra', 'kadabra', 'alakazam' ],
fire: [ null, 'charizard', 'flareon', 'emboar', 'infernape' ]
}
function wypisz()
{
const typ = document.querySelector('#typ').value;
const numer = parseInt(document.querySelector('#numer').value);
const display = document.querySelector('#display');
let message = '';
try {
if (typeof pokemon[typ] === 'undefined') {
throw new Error('Wybierz typ Pokémona');
}
if (isNaN(numer) || numer < 1 || numer >= pokemon[typ].length) {
throw new Error('Podaj prawidłowy numer pokemona');
}
message = `${typ}[${numer}]: ${pokemon[typ][numer]}`;
} catch(err) {
message = err.message;
console.warn(err.message);
} finally {
display.textContent = `${message}.`;
}
}
Tablice indeksuje się od 0, nie od 1.
możesz użyć np. takiego triku, żeby pominąć indeks 0.
const pokemon = {
psychic: [ null, 'espurr', 'meowstic', 'abra', 'kadabra', 'alakazam' ],
fire: [ null, 'charizard', 'flareon', 'emboar', 'infernape' ]
}