2011-02-02 59 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」之一,那麼它更改爲不同或者其他任何你想做的事情