Javascript addEventListener在单击时不触发功能

Javascript addEventListener在单击时不触发功能,javascript,javascript-events,Javascript,Javascript Events,这个问题的解决方案可能很简单,但我需要一些帮助 var x; for(x in document.getElementsByTagName("img")) x.addEventListener('click',openPage, false); function openPage() { alert("clicked"); } 当我点击标签时,我没有收到警报。有人知道为什么吗?另外,是否需要我的循环?此代码生成一个错误-在for..in语句中,“x”是对象的键(在本例中,是您

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

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

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

当我点击
标签时,我没有收到警报。有人知道为什么吗?另外,是否需要我的循环?

此代码生成一个错误-在for..in语句中,“x”是对象的键(在本例中,是您的
文档.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框架(如),这有助于简化您的代码:

$('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.
    });
});

此代码生成一个错误-在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框架(如),这有助于简化您的代码:

$('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.
    });
});

很抱歉,单词
函数
中有小错误。我已经对其进行了更正,并在循环中添加了更多验证我应该看到的。我对此感到有点尴尬。然而,我说它不起作用的原因是不同的。我正在做一个chrome扩展,虽然代码在jsfiddle.net中工作,但在我的chrome扩展中不工作。哦,然后我回到我的第二个建议,那就是使用jQuery。您可以始终链接到Google托管的jQuery库,该库通常会被缓存。它将极大地简化您的代码,并且(一旦您熟悉它)加快您的开发速度。不幸的是,我在Chrome扩展方面的经验非常有限,因此除此之外我没有什么帮助。我已经对其进行了更正,并在循环中添加了更多验证我应该看到的。我对此感到有点尴尬。然而,我说它不起作用的原因是不同的。我正在做一个chrome扩展,虽然代码在jsfiddle.net中工作,但在我的chrome扩展中不工作。哦,然后我回到我的第二个建议,那就是使用jQuery。您可以始终链接到Google托管的jQuery库,该库通常会被缓存。它将极大地简化您的代码,并且(一旦您熟悉它)加快您的开发速度。不幸的是,我在Chrome扩展方面的经验非常有限,因此除此之外,我没有什么帮助。