我有一個從遠程源填充的tableView。我在每行上動態添加幾個按鈕,每行的按鈕和內容都在for循環中。我在按鈕監聽器中有一個提醒對話框監聽器。如果確認(YES)被選中,一旦出現這種情況,我希望能夠更改按鈕標題。將事件偵聽器傳遞給事件偵聽器?
我收到以下錯誤:
Uncaught TypeError: Cannot set property 'title' of undefined.
這是錯誤的來源:
btn[i].title = "Finish"
對不起,我沒有在時刻訪問代碼,並沒有給用得多,但任何幫助/意見將不勝感激工作...
編輯:
虛擬代碼:
var btn = new Array();
btn[i] = Ti.UI.createButton({
backgroundImage: '/images/button.png',
title:'Start',
top: 0,
left: 0,
height: '20%',
width: '20%'
});
btn[i].addEventListener('click', function(e){
var alert = Titanium.UI.createAlertDialog({
title : 'Dialog',
message : 'Change Title',
buttonNames : ['Yes', 'No']
});
alert.addEventListener('click', function(e) {
if(e.index == 0) {
btn[i].title = "Finish";
}
});
alert.show();
});
tableViewRow.add(btn[i]);
嘗試在Chrome/Firefox或Firebug中通過類似本機的調試器來運行它,因爲我有一種感覺,它是關於在for循環內部正在改變的實際事件中使用「i」。如果你把代碼放到它自己的函數中,並將你的數組和索引傳入它,那應該可以解決你的問題。 – Turnerj