我有一个用户输入对象(“ combatant {}”,带有20多个元素),我将它们放置在类似对象(“ combatants []”)的数组中,以便可以对其进行排序并重新呈现页面的另一部分。它们都是全局变量。
我有一个简单的函数,可以根据输入字段填充对象,然后将其推入数组,该数组应将其附加到已经存在的其他对象上(这样做-对象数量每次都增加)。该功能在按下“ ADD”按钮时运行,因此每次仅推动一个对象。 (注意:“添加”按钮不会刷新输入字段或将它们清零。用户只需键入已经存在的信息即可。接下来我打算修复此位。)
但是,当我逐个对象显示数组时,每个对象都与最后一个推送的对象相同。 (因此,如果我输入4组数据,每输入一组数据后按“ ADD”,则每次运行该函数时,数组中的所有先前对象都将与当前对象相同。)
我在做什么错?以及如何解决(不使用比现在更多的花哨js)?
<script>
var combatant = { name: "foo",
Lvl: 1,
AT: 1,
DB: 20,
team: "Blue" };
var combatants = new Array();
function addCombatants() {
combatant.name = document.getElementById("combatantName").value;
combatant.Lvl = parseInt(document.getElementById('combatantLvl').value);
combatant.AT = parseInt(document.getElementById('combatantAT').value);
combatant.DB = parseInt(document.getElementById('combatantDB').value);
combatant.team = document.getElementById('team').value;
combatants.push(combatant);
}
</script>
我正在使用window.alert()
方法在一个循环中显示每个数组对象,并且似乎可以正常工作。
编辑:我已经将对象(“战斗员{}”)设为局部变量,因为只有数组才需要是全局的。可行!