прикрепить массив к событию в JavaScript? - PullRequest
0 голосов
/ 05 февраля 2011
var image = [];

for (var i = 0; i < test.length; i++) {         
    image[i]= Titanium.UI.createImageView({ 
        top: row,
        image: avatar                                
    });             
    win.add(image[i]);
}

image[i].addEventListener('click', function (e) {
    alert('image number'+i);
});

Я пытаюсь прикрепить событие к массиву, но его объект произнесен неопознанным! :)) в чем дело!!

Ответы [ 2 ]

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

Это на самом деле не новое решение, просто исправление ответа @Mahesh Velaga:

var image = [];
for (var i = 0; i < test.length; i++) {         
    image[i]= Titanium.UI.createImageView({ 
        top:row,                 
        image:avatar                                
    });             
    win.add(image[i]);

    (function(i) {  // -- added (inti)

        image[i].addEventListener('click', function (e) {
            alert('image number'+i);
        });

    })(i);          // -- added (inti)
}

Вам нужно замыкание вокруг eventListener, чтобы значение i было локальным для его обратного вызова.

1 голос
/ 05 февраля 2011

Ваша переменная i вне индекса

Нет image[test.length] и, следовательно, выдает ошибку (поскольку i = test.length после выхода из цикла)

Редактировать

Попробуйте следующее:

var image = [];
for (var i = 0; i < test.length; i++) {         
    image[i]= Titanium.UI.createImageView({ 
        top:row,                 
        image:avatar                                
    });             
    win.add(image[i]);
    setEventListner(i);
}

function setEventListener(index) {
    image[index].addEventListener('click', function (e) {
         alert('image number'+ index);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...