在javascript中将数组附加到事件?

时间:2011-02-04 23:04:16

标签: javascript arrays events for-loop

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 个答案:

答案 0 :(得分:2)

这实际上不是新的解决方案,只是对@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 :(得分:1)

您的变量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);
    });
}