工作使用下面的代碼,我得到這個錯誤RewardPurchases.PurchasesArray[i].Student_Name is undefined
:JavaScript的 - 「變量未定義」在循環的一個部分,在不同的部分
$('button#random').click(function() {
var Num = Math.floor(Math.random() * Total+1);
Num--;
for (var i in RewardPurchases.PurchasesArray) {
/* --------> */
$('#display').text("Ticker number " + Num + " in the LEAP database belongs to...\n\n\n" + RewardPurchases.PurchasesArray[i].Student_Name.toUpperCase() + " (" + TutorGroup + ")").show().delay(300);
if (i == Num) {
var TutorGroup = '';
Frog.API.get('timetable.getClasses',
{
'params': {'student': RewardPurchases.PurchasesArray[i].Student_ID },
'onSuccess': function(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].subject.name == "Tut Period") {
TutorGroup = data[i].name.replace("/Tp", "");
}
}
}
});
$('#display').animate({'font-size': 36}, 1500, function() {
$(this).prepend('<p>!!! WINNER !!!</p>');
});
alert("Ticker number " + Num + " in the LEAP database belongs to...\n\n\n" + RewardPurchases.PurchasesArray[i].Student_Name.toUpperCase() + " (" + TutorGroup + ")");
}
}
});
但是,如果我搬到這條線$('#display').text(...
如下,錯誤消失:
$('button#random').click(function() {
var Num = Math.floor(Math.random() * Total+1);
Num--;
for (var i in RewardPurchases.PurchasesArray) {
if (i == Num) {
var TutorGroup = '';
/* --------> */
$('#display').text("Ticker number " + Num + " in the LEAP database belongs to...\n\n\n" + RewardPurchases.PurchasesArray[i].Student_Name.toUpperCase() + " (" + TutorGroup + ")").show().delay(300);
Frog.API.get('timetable.getClasses',
{
'params': {'student': RewardPurchases.PurchasesArray[i].Student_ID },
'onSuccess': function(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].subject.name == "Tut Period") {
TutorGroup = data[i].name.replace("/Tp", "");
}
}
}
});
$('#display').animate({'font-size': 36}, 1500, function() {
$(this).prepend('<p>!!! WINNER !!!</p>');
});
alert("Ticker number " + Num + " in the LEAP database belongs to...\n\n\n" + RewardPurchases.PurchasesArray[i].Student_Name.toUpperCase() + " (" + TutorGroup + ")");
}
}
});
我不明白爲什麼會出現這種情況? i
沒有被if
聲明定義?
我試圖顯示數組中的每個名稱,然後選擇一個隨機名稱並以「WINNER!」的大字體顯示它。它上面。
由於提前,
你是否認爲RewardPurchases.PurchasesArray [i]的值爲「Student_Name」。可能未定義? – VirtualTroll 2012-02-28 15:54:09
您是否嘗試過記錄我,看看它們在兩種情況下的值?有沒有可能你的內部循環覆蓋了我的外部循環值? – thescientist 2012-02-28 15:54:39
我最初的想法是錯誤消失,因爲違規行在if(i == Num)塊內。檢查以確保if塊內的代碼實際上正在執行,然後更新您的問題。這不會解決問題,但它有助於追蹤。 – Zoidberg 2012-02-28 15:55:08