我有点困惑,为什么这个函数总是将h1#attack设置为hero.attacks-array的第一个元素,当任何li.attack被单击时?我正在尝试将它设置为相应的hero.atatcks元素的名称。我已经尝试了for循环和foreach,以及循环外的索引设置,每次迭代都会增加,但似乎都不起作用?
http://jsfiddle.net/47r768p8/2/
Javascript:
var hero = {
attacks: [{
name: "atck1"
}, {
name: "atck2"
}, {
name: "atck3"
}, {
name: "atck4"
}]
};
var attacks = document.getElementsByClassName("attack");
for (var i = 0; i < attacks.length; i++) {
var atck = hero.attacks[i];
attacks[i].addEventListener("click", function (event) {
document.getElementById("attack").innerText = atck.name;
})
}HTML:
<ul>
<li class="attack">Atck1</li>
<li class="attack">Atck2</li>
<li class="attack">Atck3</li>
<li class="attack">Atck4</li>
</ul>
<h1 id="attack"></h1>发布于 2015-04-27 03:28:53
数组hero.attacks由多次迭代的相同项组成,这就是为什么它每次似乎都设置相同的项。尝试以下操作:
var hero = {
attacks: [{
name: "atck1"
}, {
name: "atck2"
}, {
name: "atck3"
}, {
name: "atck4"
}]
};https://stackoverflow.com/questions/29882412
复制相似问题