我有以下 JavaScript 代码:
function LoadWord(currentLanguage, currentId, isBadWord)
{
var filePath, badFilePath;
switch(currentLanguage) {
case 'spanish':
filePath = 'data/spanish.xml';
badFilePath = 'data/badSpanish.xml';
break;
case 'catalan':
filePath = 'data/catalan.xml';
badFilePath = 'data/badCatalan.xml';
break;
default: return;
}
$.ajax({
type: "GET",
url: filePath,
dataType: "xml",
success: function(xml) {
$(xml).find('word').each(function(){
if($(this).find('id').text() == $.myNameSpace.cImgId)
{
$.myNameSpace.currentWord = $(this).attr('name');
$.ajax({
type: "GET",
url: badFilePath,
dataType: "xml",
success: function(xml) {
$(xml).find('word').each(function(){
for(index = 0; index < 3; index++)
{
if($(this).find('id').text() == $.myNameSpace.badWordsIds[index])
{
$.myNameSpace.badWords[index] = $(this).attr('name');
}
}
UpdateWords();
});
},
error: function(x) { alert(x.responceText); }
});
}
});
},
error: function(x) { alert(x.responceText); }
});
}
function UpdateWords()
{
var languageWordPos = randomFromTo(1, 4);
var index = 1;
var badWordsIndex = 0;
while (index < 5) {
if (index == languageWordPos ) {
SetTextToButton(index, $.myNameSpace.currentWord);
}
else {
SetTextToButton(index, $.myNameSpace.badWords[badWordsIndex]);
badWordsIndex++;
}
index++;
}
LoadUserOwnWord($.myNameSpace.lang, $.myNameSpace.cImgId);
}
function SetTextToButton(index, text)
{
console.log("SetTextToButton");
switch(index)
{
case 1:
$('#Word1').html(text);
break;
case 2:
$('#Word2').html(text);
break;
case 3:
$('#Word3').html(text);
break;
case 4:
$('#Word4').html(text);
break;
default: return;
}
}
我$.myNameSpace.badWords
在这一行声明:
$.myNameSpace.badWords[index] = $(this).attr('name');
此行在第二个 ajax 调用成功函数中声明。
当我尝试从$.myNameSpace.badWords
这里获取值时:
SetTextToButton(index, $.myNameSpace.badWords[badWordsIndex]);
我得到一个未声明的变量。这条线在UpdateWords()
函数内部。
我正在使用 FireBug 进行调试,但看不到BadWords
变量$.myNameSpace
。
我该如何解决这个问题?