2011-02-02 10 views
0

私はこのシナリオループに使用して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); 

       }); 

が、その私にERROを与え、これがないと言ってオブジェクト!または未確認のおかげ

+0

余分な情報をやりたいように変更し、あなたの「likeImages」のいずれかである場合:心はあなたには、する必要があるとしている – pingpong

+0

like.pngされますsomのためのより多くのコードはここで本当に助けますか? –

答えて

0

'はこの' の代わりlikeImageのを使用してみてください:

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

    this.image = 'unlike.jpg'; 

}); 
+0

それはまだ仕事をdeosnt:(( – pingpong

0

thisを介して画像オブジェクトを参照してください。イベントハンドラがトリガされると、likeImageはもはや定義されないかもしれませんし、thisキーワードは常に関数/オブジェクト内の現在のオブジェクトを指していますが、別のオブジェクトを指すこともあります。そう、あなたのコード内で

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

を行う必要があり、あなたはスコープの中var likeImageを宣言(ないグローバル1)、あなたは各ループの反復で変数なので、あなたの変数likeImageが最後に参照を保持していることを再宣言しますイメージオブジェクトが作成されました。
例えば、ループの実行後、変数aは常に9に等しくなる:

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

素晴らしい)いいえフィードバック...私の投票 –

+0

心配しない、私はちょうど投票を中止しました。あなたは、変数のコンテキスト、特にイベントハンドラの中で、 likeImageは元々のものから確かに変わっていますが、各行要素にイベントリスナーを追加することはあまりスケーラビリティがありません。コンテナtableViewにバインドしてから何かを処理する方が簡単です。 –

2

EDIT - すべてのコードを見た後

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

画像にclickイベントを配置する必要はありません。clickイベントをtableViewに配置し、「event.source」はクリックを受け取ったオブジェクトになります。

クリックを受信したオブジェクトはその後とは異なり、または任意の他、あなたが

+0

こんにちはaaronさん、ありがとう、これは完全なコードです、私はなぜそれがうまく動作しないのかわかりません、あなたの助け+!私のためにアップ! – pingpong

+0

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

+0

どうすればいいですか、少し新しいチタンです私はそれを取ることができます! – pingpong

関連する問題