2013-10-20 67 views
-2

我對JavaScript很新,但我是一個很長時間的程序員,我只是不明白髮生了什麼。訪問一個對象返回undefined,雖然它不是

我有這樣的:

var MainTable = { 
    "k1": 0, 
    "k2": 9, 
    "k3": 20 
}; 

而當我想訪問一個特定的元素:現在

var index = "k1"; 
var value = MainTable[index]; 

同時,如果完全逃避我一個理由,它返回undefined,而不是0每和每一次。我已經在這裏待了大約2個小時,我只是不明白。

謝謝!

編輯與全碼:

// These shouldn't be modified 
var maxEPoints = 29; 
var maxGold = 50; 
var hudBarWidth_HR = 650; // 650 is for hr (px) 
var hudBarWidth_LR = 350; 

var IN_COMBAT = false; 
var IN_COMBAT_WAITING = false; 

var WolfDamageTable = 
{ 
    "m11_1": 99, 
    "m11_2": 99, 
    "m11_3": 8, 
    "m11_4": 8, 
    "m11_5": 7, 
    "m11_6": 6, 
    "m11_7": 5, 
    "m11_8": 4, 
    "m11_9": 3, 
    "m11_10": 0, 
}; 

var EnemyDamageTable = 
{ 
    "m11_1": 0, 
    "m11_2": 0, 
    "m11_3": 0, 
    "m11_4": 0, 
    "m11_5": 1, 
    "m11_6": 2, 
    "m11_7": 3, 
    "m11_8": 4, 
    "m11_9": 5, 
    "m11_10": 6, 
}; 


function ComputeCombatDamage(aPoints, ePoints, skill, endurance) 
{ 
    var ratio = (aPoints - parseInt(skill)).toString(); 
    var absRatio = (aPoints - parseInt(skill)); 
    var randVal = GIMME_A_RANDOM().toString(); 

    $("td#tableWolfSkill").html(aPoints.toString()); 
    $("td#tableWolfEndurance").html(ePoints.toString()); 
    $("td#ratio").html(ratio.toString() + "/" + randVal.toString()); 

    // ... code where I process the string index 

    var eDamage = EnemyDamageTable[eIndex]; // -> problem 
    var wDamage = WolfDamageTable[wIndex]; 

    var wolfEndurance = ePoints - wDamage; 
    var enemyEndurance = endurance - eDamage; 

    var barWidth = (wolfEndurance/maxEPoints) * hudBarWidth_HR; 


    IN_COMBAT = wolfEndurance > 0 && enemyEndurance > 0; 

    return IN_COMBAT; 
} 

/********************************************************************* 
* custom function to initiate the battle sequence 
*********************************************************************/ 
function LoadBattle() 
{ 
    IN_COMBAT = true; 

    var aPoints = 0; 
    var ePoints = 0; 
    var gold = 0; 

    var name = $("span#enemyName").html(); 
    var skill = $("span#enemySkill").html(); 
    var endurance = $("span#enemyEndurance").html(); 

    if(skill.length == 0 || 
     endurance.length == 0) 
    { 
     alert("Content is not properly formated for combat!"); 
     return; 
    } 

    window.location = "#fight_start"; 
    // Set up the table before showing it 
    $("td#tableEnemyName").html(name); 
    $("td#tableEnemySkill").html(skill); 
    $("td#tableEnemyEndurance").html(endurance); 

    var keepGoing = true; 

    while(IN_COMBAT) 
    { 
     if(typeof(Storage) !== "undefined") 
     { 
      aPoints = localStorage.aPoints; 
      ePoints = localStorage.ePoints; 
     } 
     keepGoing = ComputeCombatDamage(aPoints, ePoints, skill, endurance); 
     //endurance = $("td#enemyResultEndurance").html(); 
     if(keepGoing == false) 
     { 
      break; 
     } 
     //WaitCombat(); 
    } 
} 

爲了我的錯誤似乎來自

var eDamage = EnemyDamageTable[eIndex]; 
var wDamage = WolfDamageTable[wIndex]; 

function ComputeCombatDamage

我已經儘量減少它儘可能多地現。

+3

*「現在,由於一個完全沒有理由的原因,它返回undefined而不是0」*不符合上面的代碼,它沒有。您需要顯示更多代碼,因爲您已經省略了實際導致該問題的位。 –

+0

我認爲你的'MainTable'被覆蓋在其他地方的其他地方。 –

+1

另外:這不是一個數組,這是一個對象。 –

回答

1

wIndexeIndex未定義。我可以詳細闡述一下,但應該說明一切。

相關問題