[JS] Динамически создать событие OnClick
Код:
xmlParseImages: function(xml)
{
var i, a, images, image, img;
images = xml.getElementsByTagName('image');
this.imagesList.innerHTML = images.length == 0 ? 'Изображений нет' : '';
for (i=0; i<images.length; i++)
{
img = new Image();
var path = images[i].getAttribute('src');
var imageid = images[i].getAttribute('id');
img.align = 'left';
img.height = 125;
img.id = imageid;
img.width = 125;
img.border = 2;
img.vspace = 5;
img.hspace = 5;
img.src = path;
img.onclick = function(){window.opener.who(path);window.close();};
this.imagesList.appendChild(img);
}
},
{
var i, a, images, image, img;
images = xml.getElementsByTagName('image');
this.imagesList.innerHTML = images.length == 0 ? 'Изображений нет' : '';
for (i=0; i<images.length; i++)
{
img = new Image();
var path = images[i].getAttribute('src');
var imageid = images[i].getAttribute('id');
img.align = 'left';
img.height = 125;
img.id = imageid;
img.width = 125;
img.border = 2;
img.vspace = 5;
img.hspace = 5;
img.src = path;
img.onclick = function(){window.opener.who(path);window.close();};
this.imagesList.appendChild(img);
}
},
Код:
img.onclick = function(){window.opener.who(this.src);window.close();};
Код:
var foo = function(){window.opener.who(path);window.close();};
img.onclick = foo;
img.onclick = foo;
Код:
img.onclick = function(){window.opener.who(img.src);window.close();};
Событие срабатывает - но в функцию передается адрес последней картинки - не важно на какую их них кликаешь.
Если цеплять через addEventListener - то вообще происходит очень интересно - событие срабатывает в момент загрузки картинок. :) сижу - пытаюсь понять как можно решить данную проблему.
Цитата: REFOT
А лучше попробуй так :)
Код:
img.onclick = function(){window.opener.who(this.src);window.close();};
БИНГО!
Блин, три часа просидел - не сообразил, что в данном случае this будет указывать на img.
Спасибо за подсказку.
Цитата: Meander
А так:
?
Код:
var foo = function(){window.opener.who(path);window.close();};
img.onclick = foo;
img.onclick = foo;
Да. Это тоже будет работать.