【发布时间】:2017-02-22 10:58:09
【问题描述】:
尝试简单地识别是否有任何标签在任何时候被点击,并获取点击标签的 href 属性以存储在数据库中。
为了测试我试图打印出 href 但屏幕上没有打印任何内容并且控制台中没有错误?有什么想法吗?
// Anchor Tags - Capture the href of the link clicked
var aTags = document.getElementsByTagName('a');
for (var i = aTags.length - 1; i >= 0; --i) {
aTags[i].onclick = function() {
var aTagHref = aTags[i].getAttribute("href");
alert(aTagHref);
};
}
【问题讨论】:
-
使用 'this' 或 event.target。您尝试执行此操作的方式不起作用,因为您没有通过闭包缓存
i。因此,当循环结束时,i 将是 aTags.length + 1,因此所有点击都将尝试在 aTags 中找到一个不存在的元素。始终尝试在事件处理程序中使用 event.target,因为它会告诉您事件来自哪个元素,而无需将其缓存在数组中。
标签: javascript dom event-handling getelementsbytagname getattribute