当用户选择某个值时,我有一个对象需要添加另一个对象。该对象是一个持有基本信息的玩家对象,我还有一个武器对象,其中包含有关武器的信息。当用户选择要使用的武器时,我想将武器对象添加到玩家对象中,如果用户选择不同的武器,我想删除之前的武器对象并添加新的武器对象。这可能吗?是否就像将值推入数组一样?
HTML
<select>
<option></option>
<option>Sword</option>
<option>Axe</option>
<option>Hammer</option>
</select>
JS
var Player = {
name: "One",
weapon:
}
var Sword = {
type: "Bronze",
speed: 1.25,
min_damage: 15,
max_damage: 20,
str_required: 15,
gems: "",
hilt: "",
blade: "",
inscriptions: "",
runes: ""
}
var Axe = {
type: "Bronze",
speed: 1.5,
min_damage: 25,
max_damage: 28,
str_required: 25,
gems: "",
hilt: "",
blade: "",
inscriptions: "",
runes: ""
}
var Hammer = {
type: "Bronze",
speed: 2.5,
min_damage: 45,
max_damage: 60,
str_required: 55,
gems: "",
hilt: "",
blade: "",
inscriptions: "",
runes: ""
}
$("select").on("change", function(){
var selected_weapon = $(this).val();
if(selected_weapon == "Sword"){
Player.weapon = Sword;
$("#content").append(Player);
}
else if(selected_weapon == "Axe"){
Player.weapon = Axe;
$("#content").append(Player);
}
else if(selected_weapon == "Hammer"){
Player.weapon = Hammer;
$("#content").append(Player);
}
});
答案 0 :(得分:0)
在JS中相互添加现有对象非常容易。
在您的情况下,Player.weapon = Sword;
那会给你
Player = {
name: "One",
weapon: {
type: "Bronze",
speed: 1.25,
min_damage: 15,
max_damage: 20,
str_required: 15,
gems: "",
hilt: "",
blade: "",
inscriptions: "",
runes: ""
}
}
我建议为每个武器对象添加name
键。现在当你看到我上面发布的Player
物体时,你不知道它有哪种武器。因此,只需添加name: 'Sword'
即可在以后根据需要引用它。
答案 1 :(得分:0)
是的,你会将玩家选择的武器存放在空阵列中......
var Player = {
name: "One",
weapon: []
}
......然后将武器推入阵列。
Player.weapon.push({ name: 'Sword', obj: Sword });
如果你想在添加新武器之前清空阵列,你可以这样做......
Player.weapon.empty();
...或
Player.weapon = [];
你可以......
Player.weapon = Sword
...但是你的玩家只能选择一种武器。如果你这样做,我会这样做......
Player.weapon = { name: 'Sword', obj: Sword };
...或在武器对象上存储名称属性。
希望有所帮助