найти изображения в цикле for, а затем добавить событие? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть такой сценарий, где я загружаю изображения с помощью цикла 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);

                });

но это дает мне ошибку, говоря, что это не объект! или неопознанный !! спасибо

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

РЕДАКТИРОВАТЬ -

Посмотрев на весь код,

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

вам не нужно помещать событие click на изображение, помещать событие click в tableView, и «event.source» будет объектом, который получил щелчок.

если объект, получивший щелчок, является одним из ваших "likeImages", тогда измените его на непохожий или что-либо еще, что вы хотите сделать

0 голосов
/ 02 февраля 2011

относится к объекту изображения через 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 голосов
/ 02 февраля 2011

Попробуйте использовать 'this' вместо likeImage:

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

    this.image = 'unlike.jpg';

});
...