-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
我已經儘量減少它儘可能多地現。
*「現在,由於一個完全沒有理由的原因,它返回undefined而不是0」*不符合上面的代碼,它沒有。您需要顯示更多代碼,因爲您已經省略了實際導致該問題的位。 –
我認爲你的'MainTable'被覆蓋在其他地方的其他地方。 –
另外:這不是一個數組,這是一個對象。 –