Проблема в том, что вы не закрыли элемент элемента списка до того, как начали добавлять еще один.
.innerHTML += "<li>" + pokemonArray[i] + "<li>"; // The 2nd one not closing...
Он неявно создает пустой элемент списка после каждого из те, которые вам нужны.
Пример
Я создал модель DOM, потому что вы ее не предоставили.
const pokemonArray = [];
const element = document.querySelectorAll('.pokemon');
addPokemon();
function addPokemon() {
var pokemonName = document.getElementById("pokemon-name-container");
pokemonName.innerHTML = document.getElementById("pokemon-names").value;
for (var i = 0; i < element.length; i++) {
if (typeof element[i].value !== "undefined") {
pokemonArray.push(element[i].value);
}
}
console.log(pokemonArray);
for (var i = 0; i < pokemonArray.length; i++) {
document.getElementById("pokemon-container").innerHTML += "<li>" + pokemonArray[i] + "</li>";
}
}
<input type="input" id="pokemon-names" />
<input type="text" class="pokemon" value="Bulbasaur" />
<input type="text" class="pokemon" value="Charmander" />
<input type="text" class="pokemon" value="Squirtle" />
<ul id="pokemon-name-container"></ul>
<ul id="pokemon-container"></ul>
Использование JavaScript для управления DOM
Лучший способ сделать это - создать элементы DOM в JavaScript и добавьте их в контейнер. Вы также можете сохранять состояние и повторно отображать список каждый раз, когда добавляете нового покемона.
const POKEMON_NAMES = [ 'Bulbasaur', 'Charmander', 'Squirtle' ];
const state = {
pokemon: []
};
let sel = document.querySelector('.available-pokemon');
sel.appendChild(new Option('', ''));
POKEMON_NAMES.forEach(name => sel.appendChild(new Option(name, name)));
sel.addEventListener('change', addPokemon);
function addPokemon(e) {
let selectedPokemon = e.currentTarget.value;
if (selectedPokemon.length > 0 && !state.pokemon.includes(selectedPokemon)) {
state.pokemon.push(selectedPokemon);
renderPokemonList();
}
}
function renderPokemonList() {
let container = document.querySelector('.pokemon-container');
emptyElement(container);
state.pokemon.sort().forEach(pokemon => {
let listItem = document.createElement('LI');
listItem.textContent = pokemon;
container.appendChild(listItem);
});
}
function emptyElement(element) {
while (element.firstChild) {
element.removeChild(element.lastChild);
}
}
.pokemon-container {
border: thin solid grey;
min-height: 1em;
width: 50%;
padding: 0.5em 2em;
}
<select class="available-pokemon"></select>
<ul class="pokemon-container"></ul>