我有这种情况,我使用for循环加载图像:
for (var i = 0; i < test.length; i++) {
var likeImage= Titanium.UI.createImageView({
image:'like.png',
width:17,
height:10,
left:110,
top:4
});
}
然后我添加一个事件,如果单击其中一个心脏,它应该改变图像。
likeImage.addEventListener("click", function(e) {
likeImage.image = 'unlike.jpg';
});
但是当我点击没有任何事情发生时,任何人都可以解释这个问题,谢谢你们,
编辑:
tableView.addEventListener('click', function(e) {
var tappedRow = e.row;
alert(tappedRow.username1.text);
});
但它给了我一个错误,说这不是一个对象!或者身份不明!!感谢
答案 0 :(得分:2)
编辑 -
查看完所有代码后,
http://paste.bradleygill.com/index.php?paste_id=152785
你不需要在图像上放置一个click事件,将click事件放在tableView上,“event.source”将是接收点击的对象。
如果收到点击的对象是您的“likeImages”之一,则将其更改为不同于您想要做的其他任何内容
答案 1 :(得分:0)
尝试使用'this'而不是likeImage:
likeImage.addEventListener("click", function(e) {
this.image = 'unlike.jpg';
});
答案 2 :(得分:0)
通过this
引用图像对象。触发事件处理程序时,likeImage
甚至可能不再定义,或者可以指向另一个对象,而this
关键字将始终指向函数/对象中的当前对象。你应该这样做
likeImage.addEventListener("click", function(e) {
this.image = 'unlike.jpg';
});
在你的代码中,你在for scope(而不是全局的)中声明var likeImage
并在每个循环的迭代中重新声明该变量,因此你的变量likeImage
只保留对最后一个的引用图像对象已创建
例如,在执行循环之后,变量a
将始终等于9:
for(var i=0;i<10;i++)
var a = i;
alert(a);