var image = [];
for (var i = 0; i < test.length; i++) {
image[i]= Titanium.UI.createImageView({
top: row,
image: avatar
});
win.add(image[i]);
}
image[i].addEventListener('click', function (e) {
alert('image number'+i);
});
我试图将一个事件附加到一个数组,但它的说法对象没有异常! :)) 怎么了!!
答案 0 :(得分:2)
这实际上不是新的解决方案,只是对@Mahesh Velaga答案的修正:
var image = [];
for (var i = 0; i < test.length; i++) {
image[i]= Titanium.UI.createImageView({
top:row,
image:avatar
});
win.add(image[i]);
(function(i) { // -- added (inti)
image[i].addEventListener('click', function (e) {
alert('image number'+i);
});
})(i); // -- added (inti)
}
你需要在eventListener周围设置一个闭包,使i
值成为其回调的本地值。
答案 1 :(得分:1)
您的变量i
超出索引
没有image[test.length]
因此它会抛出错误(因为一旦退出循环,i = test.length)
修改强>:
尝试以下方法:
var image = [];
for (var i = 0; i < test.length; i++) {
image[i]= Titanium.UI.createImageView({
top:row,
image:avatar
});
win.add(image[i]);
setEventListner(i);
}
function setEventListener(index) {
image[index].addEventListener('click', function (e) {
alert('image number'+ index);
});
}