如何按类名获取元素?
使用JavaScript,我们可以使用以下语法来获取元素ID:
var x=document.getElementById("by_id");
我试图按照类来获取元素:
var y=document.getElementByClass("by_class");
但是它导致了错误:
getElementByClass is not function
我怎样才能得到它的类的元素?
DOM函数的名称实际上是getElementsByClassName
,而不是getElementByClassName
,因为页面上的多个元素可以具有相同的类,因此: Elements
。
这个返回值将是一个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);
根据caniuse.com的说法,yckartbuild议使用querySelector('.foo')
和querySelectorAll('.foo')
来更好地支持(93.99%vs 87.24%):
- querySelector(全部)
- getElementsByClassName方法
- 不要使用w3schools学习一些东西
- 请参阅MDN获取准确的信息
另一种select是使用querySelector('.foo')
或querySelectorAll('.foo')
,它比getElementsByClassName
具有更宽的浏览器支持。
你需要使用document.getElementsByClassName('class_name');
不要忘记返回值是一个元素数组,所以如果你想第一个使用:
document.getElementsByClassName('class_name')[0]
您可以使用
getElementsByClassName
假设你有一些元素并且应用了一个类名“test”,那么你可以得到如下的元素
var tests = document.getElementsByClassName('test');
它返回一个实例NodeList
,或者它的超集: HTMLCollection
(FF)。
阅读更多