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扩展方面的经验非常有限,因此除此之外,我没有什么帮助。