2011-02-02 26 views
0

我有这样的场景,使用for循环IM加载图像:在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 
}); 

} 

然后IM添加事件,如果点击心中的一个应该改变形象。

likeImage.addEventListener("click", function(e) { 

likeImage.image = 'unlike.jpg'; 

}); 

但是当我点击没有发生任何事情,任何人都可以摆脱这个问题,请轻,谢谢你们

编辑:

tableView.addEventListener('click', function(e) { 
var tappedRow = e.row; 


        alert(tappedRow.username1.text); 

       }); 

但它给我的埃罗,说这是不一个东西!或不明身份!感谢

+0

额外的信息:在心脏被like.png – pingpong 2011-02-02 20:29:05

+0

你将需要包括更多的代码为索姆真正的帮助吗? – 2011-02-02 21:32:35

回答

0

尝试使用 '这个',而不是likeImage:

likeImage.addEventListener("click", function(e) { 

    this.image = 'unlike.jpg'; 

}); 
+0

它仍然工作:(( – pingpong 2011-02-02 20:49:39

0

通过this参考图像对象。当事件处理程序被触发时,您的likeImage甚至可能不再被定义,或者可以指向另一个对象,而this关键字将始终指向函数/对象中的当前对象。所以你应该做

likeImage.addEventListener("click", function(e) { 
    this.image = 'unlike.jpg'; 
}); 

在你的代码,你在声明var likeImage的为范围(而不是全局的),你重新声明,在每个循环的迭代变量,所以你的变量likeImage只到最后抱着一个参考图像对象创建。
例如,循环的执行之后,所述可变a将总是等于9:

for(var i=0;i<10;i++) 
    var a = i; 
alert(a); 
+0

太棒了!没有反馈...只是把我投下来 – 2011-02-02 21:04:59

2

编辑 -

看所有的代码后,

http://paste.bradleygill.com/index.php?paste_id=152785

你不需要在图像上放置一个点击事件,把点击事件放在tableView上,“event.source”将是接收到点击的对象。

如果获得点击的对象是你的“likeImages”之一,那么它更改为不同或者其他任何你想做的事情

相关问题