2017-01-17 34 views
0

所以我遇到了一個問題,那就是我第一次真正使用地圖時遇到了問題,我希望有人能夠善加闡述。基本上我所擁有的是一個我試圖傳遞值的表,並且我設置了一個變量映射,以便使用data- *屬性通過onclick事件傳遞信息。不過,我還需要自動傳遞一些來自幾個if else語句的值。以下是我迄今爲止:正在檢索HTML地圖中的Javascript地圖值

地圖本身:

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> 

的,如果其他人設置作爲這樣的:

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); 
} 

所以我的問題是,我似乎無法通過地圖項的索引,以獲取二級指標與這段代碼證明:

getSkill(skillMap.get([36])); 

缺少什麼我在這裏?起初,我認爲這只是一個語法處理,所以我擺脫了括號,並只用圓括號飛行,但似乎沒有工作要麼

+0

它也可能很重要,指出目標是傳遞的地圖的值與字符串是技能和變量是skillRate – NixondisNRVA

回答

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])