如何按类名获取元素?

使用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具有更宽的浏览器支持。

http://caniuse.com/#feat=queryselector

http://caniuse.com/#feat=getelementsbyclassname

你需要使用document.getElementsByClassName('class_name');

不要忘记返回值是一个元素数组,所以如果你想第一个使用:

document.getElementsByClassName('class_name')[0]

您可以使用

 getElementsByClassName 

假设你有一些元素并且应用了一个类名“test”,那么你可以得到如下的元素

 var tests = document.getElementsByClassName('test'); 

它返回一个实例NodeList ,或者它的超集: HTMLCollection (FF)。

阅读更多