我正在尝试动态访问数组,否则我将不得不复制我的代码,而实际上唯一的区别是buildablesets1和buildablesets2。
var buildablesets1 = [""];
var buildablesets2 = [""];
var buildablesetsx = "buildablesets" + playerturn;
for (var i = 0; i < set.length; i++) {
if (doesOwnSet('player'+playerturn, set[i])) {
if(playerturn===1) buildablesets1.push(set[i]);
}
}
if (buildablesetsx.length > 1){
var b = $("#buildsets"+playerturn);
for (k = 1; k < buildablesetsx.length; k++){
b.append("<option value='" + buildablesetsx[k]+ "'>" + buildablesetsx[k] + "</option>");
}
}
代码将播放器拥有的任何集合推送到buildablesetsX。然后下拉框#buildsetsX将填充所有拥有的集。 1.如何获得buildablesetsX的效果,其中X取决于玩家转弯。 2.我想在每个转弯处减少下拉框,否则它将重复,因为它是附加的。 (这会更好地实现这一点,理想情况下,我只想在有新设置的情况下填充下拉框。)
另外对不起,我知道之前已经提出过这个问题,但我并不完全理解答案或问题。
答案 0 :(得分:2)
每当您发现自己使用序列号创建变量并想要动态访问它们时,您真正应该使用的是数组。在这种情况下,您应该使用二维数组:
var buildablesets = [[""], [""]];
第一个维度是玩家编号,第二个维度是玩家建立的集合列表。
要访问特定玩家的套装,请执行以下操作:
buildablesetsx = buildablesets[playerturn];
其余代码将按照您编写的方式工作,并使用上述变量赋值。