所以我在第一次真正使用地图时遇到了一个问题,我希望有人会如此善良以至于有所了解。基本上我所拥有的是一个表,我试图传递值,并设置一个变量映射,以便使用data- *属性通过onclick事件传递信息。但是,我还需要自动传递一些来自几个if else语句的值。以下是我到目前为止的情况:
地图本身:
var skills = [
["MATH", math], //0
["BIOLOGY", bio], //1
["MECHANICS", mech], //2
["ELECTRONICS", elect], //3
["STEALTH", roll(4,40)], //4
["NEGOTIATION", roll(2,20)], //5
["HORSEMANSHIP", horse], //6
["MOTORCYCLE", cycle], //7
["MARINE_BIO", marBio], //8
["BOTANY", botany], //9
["COMPUTERS", comp], //10
etc...
var advSkills = [
["FORENSICS", foren], //0
["TOXICOLOGY", toxic], //1
["STRUCTURAL_ENGINEERING", strEng], //2
["ENCRYPTION", encrypt], //3
["OFF_HAND", roll(3,30)], //4
["BURST_CONTROL", roll(3,30)], //5
["FREIGHT_TRUCKS", freight], //6
["CONSTRUCTION_VEHICLES", conVeh], //7
["PHARMACOLOGY", pharma], //8
["MICRO_BIOLOGY", micBio], //9
["PROGRAMMING", program], //10
etc...
var skillMap = new Map(skills);
var advSkillMap = new Map(advSkills);
这些值的目标区域如下所示:
<tr>
<td><input type="text" id="skill1" value="" readonly /></td>
<td><input type="text" id="skillRate1" value="" readonly /></td>
<td><input type="text" id="skill2" value="" readonly /></td>
<td><input type="text" id="skillRate2" value="" readonly /></td>
<td><input type="text" id="skill3" value="" readonly /></td>
<td><input type="text" id="skillRate3" value="" readonly /></td>
<td><input type="text" id="skill4" value="" readonly /></td>
<td><input type="text" id="skillRate4" value="" readonly /></td>
</tr>
if else是这样设置的:
function background(){
var background = roll(1,100);
//DOCTOR
if (background <= 5){
getSkill(skillMap.get([36]));
getSkill(["BIOLOGY"]);
getSkill(["FIRST_AID"]);
getAdvSkill(["DOCTOR"]);
//botany && holis || bio && pharma
return "Doctor";
//CHEMIST
} else if (background >= 6 && background <= 8){
getSkill(skillMap.get([36]));
getSkill(["MATH"]);
getSkill(["CHEMISTRY"]);
//botany && holis || bio && toxic
return "Chemist";
并且实际的getSkill函数在这里:
var n = 1;
var an = 1;
function getSkill(skillMap(index)){
do {
document.getElementById("skill" + n).setAttribute("value", skillMap.get([0]));
document.getElementById("skillRate" + n).setAttribute("value", skillMap.get([1]);
n ++;
break;
} while (n < 17);
}
所以我的问题是我似乎无法传递map项的索引以便检索二级索引,如下面的代码所示:
getSkill(skillMap.get([36]));
我在这里缺少什么?起初我以为这只是一个语法协议,所以我摆脱了括号,只用括号飞行,但似乎无法工作
答案 0 :(得分:0)
首先,skillMap就是这样的。
{
'MATH': math,
'BIOLOGY': bio,
...
}
您可以按键获取值skillMap['MATH'] -> math
。
或者您可以通过Array.from( skillMap.keys() ) -> ['MATH', 'BIOLOGY', ...]
获取密钥数组。
然后您可以通过键索引访问值。 skillMap[Array.from(skillMap.keys())[0]] -> math
。
但不是skillMap.get([36])
。