If that title made no sense, let me elaborate.
I have a two objects one called area and one called enemy.
Each area has it's own enemies so I made enemy prototypes for each area.
Next I did an array.push(); function on each area prototype so if the user clicks a button they'll be shown a list of "area's" they can essentially explore.
the main part that gives me an error is if I try any function like alert(areas[0].enemies[0].name);
How can I use a button to display a specific enemy name?
No jQuery please
function area(name, enemies) {
this.name = name;
this.enemies = enemies;
}
function enemy(name, type) {
this.name = name;
this.type = type;
}
var cave = new area("Cave", {
bat: new enemy("Bat", "Flying"),
snake: new enemy("Snake", "Ground"),
});
var forest = new area("Forest", {
bear: new enemy("Bear", "Animal"),
coyote: new enemy("Coyote", "Wolf"),
});
areas = [];
areas.push(cave, forest);
var thatBtn = document.getElementById('thatBtn'),
display = document.getElementById('display');
thatBtn.addEventListener('click', function() {
for (i = 0; i < areas.length; i++) {
var li = document.createElement('li'),
liBtn = document.createElement('button');
liBtn.textContent = areas[i].name;
li.appendChild(liBtn);
display.appendChild(li);
liBtn.addEventListener('click', function() {
for (j = 0; j < areas.length; j++) {
if (areas[j].name == event.target.textContent) {
alert(areas[j].name);
for (k = 0; k < Object.keys(areas[j].enemies).length; k++) {
alert(areas[j].enemies[k].name);
}
}
}
});
}
});
<button id="thatBtn">click here</button>
<ul id="display">
</ul>
function Areaandfunction Enemy.