addEventListener не вызывает функцию при клике - PullRequest
1 голос
/ 08 марта 2012

Решение этой проблемы, вероятно, довольно простое, но мне нужна помощь.

var x;
for(x in document.getElementsByTagName("img"))
    x.addEventListener('click',openPage, false);

function openPage() {
    alert("clicked");
}

Я не получаю оповещение, когда нажимаю на тег <img src="something" />. Кто-нибудь знает почему? Кроме того, необходим ли мой цикл?

1 Ответ

1 голос
/ 08 марта 2012

Этот код выдает ошибку - в операторе for..in 'x' является ключом вашего объекта (в данном случае, ваш document.getElementsByTagName вызов).Что вы хотите:

var x,
    imgs = document.getElementsByTagName("img");

for(x in imgs) {
    if (imgs[x] instanceof Element) {
        imgs[x].addEventListener('click',openPage, false);
    }
}

function openPage() {
    alert("clicked");
}

Могу ли я предложить использовать Javascript Framework (например, jQuery ), который может помочь упростить ваш код как таковой:

$('img').each(function() {
    $(this).click(function() {
       alert('Clicked!');
       // Now that we're in the callback context, $(this) will be the current
       // target - the specific image that was clicked.
       // i.e. $(this).fadeOut() would slowly fade out the clicked image.
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...