我目前正在尝试编写一些 JavaScript 来获取已单击的类的属性。我知道要以正确的方式做到这一点,我应该使用事件侦听器。
我的代码如下:
var classname = document.getElementsByClassName("classname");
var myFunction = function() {
var attribute = this.getAttribute("data-myattribute");
alert(attribute);
};
classname.addEventListener('click', myFunction(), false);
每次单击其中一个类来告诉我属性时,我都希望得到一个警报框,但不幸的是,这不起作用。有人可以帮忙吗?
( 注意- _我可以很容易地在 jQuery
中做到这一点,但我 不想 使用它_)
原文由 30secondstosam 发布,翻译遵循 CC BY-SA 4.0 许可协议
这应该有效。
getElementsByClassName
返回符合条件的元素的类数组对象(见下文)。jQuery 为您完成了循环部分,您需要在纯 JavaScript 中完成。
如果您有 ES6 支持,您可以将最后一行替换为:
注意:较旧的浏览器(如 IE6、IE7、IE8)不支持
getElementsByClassName
,因此它们返回undefined
。getElementsByClassName
的详细信息getElementsByClassName
不返回数组,但在大多数情况下返回HTMLCollection
,或者在某些浏览器中返回NodeList
( Mozilla ref )。这两种类型都是类数组,(意味着它们具有长度属性并且可以通过它们的索引访问对象),但不是严格意义上的数组或继承自数组(意味着可以在数组上执行的其他方法不能在这些类型上执行)。感谢用户 @Nemo 指出这一点并让我深入了解。