【发布时间】:2018-01-28 12:48:44
【问题描述】:
如果这个标题没有意义,让我详细说明。
我有两个对象,一个叫 area,一个叫 enemy。
每个区域都有自己的敌人,所以我为每个区域制作了敌人原型。
接下来我在每个区域原型上做了一个array.push(); 函数,所以如果用户点击一个按钮,他们将看到一个他们基本上可以探索的“区域”列表。
给我一个错误的主要部分是如果我尝试像alert(areas[0].enemies[0].name);这样的任何功能
如何使用按钮显示特定的敌人名称?
请不要使用 jQuery
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 Area和function Enemy。
标签: javascript html oop object prototype