一尘不染

如何通过类名获取元素?

javascript

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

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

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

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

但这导致了错误:

getElementByClass is not function

如何按类获取元素?


阅读 461

收藏
2020-04-25

共1个答案

一尘不染

DOM函数的名称实际上getElementsByClassName不是getElementByClassName,仅仅是因为页面上的多个元素可以具有同一类,因此:Elements

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

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

如果由于某种原因需要返回对象作为数组,则由于其不可思议的length属性,您可以轻松地做到这一点:

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

正如yckart所建议的那样querySelector('.foo')querySelectorAll('.foo')它将是更可取的,因为根据caniuse.com的确,它们得到了更好的支持(93.99%vs87.24%):

2020-04-25