私は次の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');
この行は、2番目のajax呼び出し成功関数内で宣言されています。
ここから値を取得しようとすると$.myNameSpace.badWords
:
SetTextToButton(index, $.myNameSpace.badWords[badWordsIndex]);
宣言されていない変数を取得します。この行はUpdateWords()
関数内にあります。
FireBugでデバッグしていますが、変数が表示BadWords
されません。$.myNameSpace
この問題を解決するにはどうすればよいですか?