addEventListener在点击时不触发功能

时间:2012-03-07 23:30:56

标签: javascript javascript-events

这个问题的解决方案可能很简单,但我需要一些帮助。

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

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

点击<img src="something" />标记时,我没有收到提醒。谁知道为什么?还有,我的循环是必要的吗?

1 个答案:

答案 0 :(得分:1)

此代码产生错误 - 在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框架(如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.
    });
});