【发布时间】:2016-03-04 21:56:13
【问题描述】:
不久前,我需要帮助进行复杂的切换,但现在我将直接变量替换为数组。我认为最好使用 for 语句,它不显示结果。
这对我来说是一个附带项目,所以如果您认为有任何方面可以改进,请告诉我。
<script>
var strMod=0;
var dexMod=0;
var conMod=0;
var intMod=0;
var wisMod=0;
var chaMod=0;
var strength = prompt("what is your strength?");
var dexterity = prompt("what is your dexterity?");
var constitution = prompt("what is your constitution?");
var intelligence = prompt("what is your intelligence?");
var wisdom = prompt("what is your wisdom?");
var charisma = prompt("what is your charisma?");
var abilities=[strength,dexterity,constitution,intelligence,wisdom,charisma];
var abiMod=[strMod,dexMod,conMod,intMod,wisMod,chaMod];
for (var i=0; i<abilities.length;i++){
switch(true){
case (abilities(i)>=0 && abilities(i)<2 && abilities(i)!==null):
abiMod(i)=-5;
break;
case (abilities(i)>=2 && abilities(i)<4):
abiMod(i)=-4;
break;
case (abilities(i)>=4 && abilities(i)<6):
abiMod(i)=-3;
break;
case (abilities(i)>=6 && abilities(i)<8):
abiMod(i)=-2;
break;
case (abilities(i)>=8 && abilities(i)<10):
abiMod(i)=-1;
break;
case (abilities(i)>=10 && abilities(i)<12):
abiMod(i)=0;
break;
case (abilities(i)>=12 && abilities(i)<14):
abiMod(i)=1;
break;
case (abilities(i)>=14 && abilities(i)<16):
abiMod(i)=2;
break;
case (abilities(i)>=16 && abilities(i)<18):
abiMod(i)=3;
break;
case (abilities(i)>=18 && abilities(i)<20):
abiMod(i)=4;
break;
case (abilities(i)>=20 && abilities(i)<22):
abiMod(i)=5;
break;
default:
abiMod(i)= prompt("what is your"+ abilities(i) +"modifier?");
break;
};
alert(abiMod(i));
};
</script>
【问题讨论】:
-
你不能分配给像
abiMod(i)=-5;这样的函数调用 -
使用正确的语法访问数组
abilities[i]、abiMod[i]的元素。此外,您解决问题的代码看起来很奇怪。 -
然后检查你的 Javascript 控制台,它可能会报告语法错误。
-
感谢 quantastical 和 Alexandre 的更正。巴尔玛 你的意思是什么?我正在进入桌面游戏,我懒得做基本的算术,并且将开发一个家庭网站来记录字符数据,因此拥有能够查看单个数组变量的标准开关将有助于简化代码.我也想过把开关变成一个函数,但不知道如何相应地调整变量。
-
A javascript intro 或 this one instead 将是一个不错的起点。
标签: javascript arrays switch-statement