我有一个从远程源填充的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