问题描述:
尝试简单地识别是否有任何标签在任何时候被点击并获得单击标签的href属性以存储在数据库中。试图获得<a>标签的href属性onclick - 没有错误?
为了测试我试图打印出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
引用点击a
。
像这样:
var aTags = document.getElementsByTagName('a');
for (var i = aTags.length - 1; i >= 0; --i) {
aTags[i].onclick = function() {
var aTagHref = this.getAttribute("href");
alert(aTagHref);
};
}
<a href="#asd">a</a>
<br />
<a href="#asdf">b</a>
<br />
<a href="#asdfg">c</a>
使用 '这个' 或event.target。你试图做到这一点的方式不起作用,因为你不通过闭包来缓存'i'。因此,当循环结束时,我将是aTags.length + 1,因此所有点击都将尝试在aTags中找到一个不存在的元素。总是尝试在事件处理程序中使用event.target,因为它会告诉您事件来自哪个元素,而无需将其缓存到数组中。 – Shilly