javascript - 如何通过类名获取元素?

标签 javascript dom

使用 JavaScript,我们可以使用以下语法通过 id 获取元素:

var x=document.getElementById("by_id");

我尝试了以下按类获取元素:

var y=document.getElementByClass("by_class");

但是结果报错了:

getElementByClass is not function

如何通过类获取元素?

最佳答案

DOM函数的名字其实是getElementsByClassName,而不是getElementByClassName,只是因为页面上不止一个元素可以有同一个类,因此:元素.

this 的返回值将是一个 NodeList 实例,或者是 NodeList 的超集(FF,例如返回 HTMLCollection 的一个实例)。无论如何:返回值是一个类似数组的对象:

var y = document.getElementsByClassName('foo');
var aNode = y[0];

如果出于某种原因您需要将返回对象作为一个数组,您可以很容易地做到这一点,因为它具有神奇的长度属性:

var arrFromList = Array.prototype.slice.call(y);
//or as per AntonB's comment:
var arrFromList = [].slice.call(y);

作为 yckart建议的 querySelector('.foo')querySelectorAll('.foo') 会更好,因为它们确实得到了更好的支持(93.99% vs 87.24% ),根据 caniuse.com:

关于javascript - 如何通过类名获取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965956/

相关文章:

javascript - JS中的 "and `有什么区别?

Javascript DOM编码的html代码问题

javascript - 如何使用 addEventListener 获取用户点击坐标,然后使用 elementFromPoint().click() 重复该点击?

javascript - 使用 Firefox 解析 HTML

javascript - 将对象追加到 DOM,缓冲事件直到下一个刻度?

javascript - iframe 内的脚本标签在父 dom 上执行

JavaScript 未捕获类型错误 : Cannot read property '0' of undefined using a for loop to search an array

javascript - AngularJS - 获取输入值并将其传递到父指令范围

javascript - 基于内部没有类的 jQuery 选择器

javascript - Kotlin Javascript 中的 ReferenceError : ok is not defined at QUnitAsserter. assertTrue