使用JavaScript,我们可以使用以下语法通过id获取元素:
var x=document.getElementById("by_id");
我尝试通过以下方式按类获取元素:
var y=document.getElementByClass("by_class");
但是它导致了错误:
getElementByClass is not function
如何通过类名获取元素?
使用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);
正如yckart建议的那样,querySelector('.foo')
和querySelectorAll('.foo')
更可取,因为它们有更好的支持率(93.99% vs 87.24%),可以在caniuse.com上查看:
另一个选择是使用 querySelector('.foo')
或 querySelectorAll('.foo')
,这两者的浏览器支持比 getElementsByClassName
更广泛。
document.getElementsByClassName('class_name');
,请注意返回的值是元素的数组,如果要获取第一个值,请使用:document.getElementsByClassName('class_name')[0]
.
更新
现在您可以使用document.querySelector(".class_name")
来获取带有class_name
CSS类的第一个元素(如果页面上没有这个类名,则会返回null
),或者使用document.querySelectorAll(".class_name")
来获取一个带有class_name
CSS类的元素NodeList(如果页面上没有这个类名,则会返回一个空的NodeList)。请保留原来的HTML标签。HTMLCollection
,而不是 Array
https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname ;) - yckart你可以使用
getElementsByClassName
var tests = document.getElementsByClassName('test');
NodeList
的实例,或者它的超集:HTMLCollection
(火狐浏览器)。
更多信息