[英]Javascript | Undefined Variable in switch
因此,我使用API是為了獲取來自《戰地風雲》的統計數據。 該級別返回一個數字,我正在使用開關來確定該級別的名稱,因此無論用戶名是什么,或者用戶是否排名靠前,都將使用該開關進行更新。 但是,當我訪問“ rank”變量時,它沒有出現,因為它說未定義級別,因此該開關根本無法工作。
var rank;
var level;
$(document).ready(function() {
ajaxSearch();
});
function ajaxSearch() {
$.ajax({
url: '/api/',
dataType: 'json',
type: 'get',
cache: 'false',
success: function(data) {
$(data.result).each(function(index, value) {
level = value.rank.number;
console.log(level);
});
}
})
}
function workoutRank() {
switch (level) {
case '0':
rank = 'Recruit';
break;
case '1':
rank = 'Private';
break;
case '2':
rank = 'Private II';
break;
case '3':
rank = 'Private III';
break;
case '4':
rank = 'Private IV';
break;
case '19':
rank = 'Corporal X';
break;
}
}
$('#lookup-btn').click(function() {
workoutRank();
console.log(rank);
});
這是控制台的圖像。 安慰
ajaxSearch
是異步的,因此當您調用workoutRank
時,不能保證level
值。 您需要確保您了解這兩件事是並行發生的。
相反,當ajax
調用返回時,請調用workoutRank
,或使用promises
來確保該值能夠解析。
編輯:對問題進行了編輯以表明不一定是這種情況,但我將保留此內容,因為將來肯定會有其他人遇到這個問題
有兩種可能性:
Ajax調用返回的數據不是您所期望的。 特別是,如果您的level
值是整數,那么您的case值也應該是整數:
switch (level) { case 0: // not '0' rank = 'Recruit'; break; // etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.