TDH*_*DHM 156 javascript dom
使用JavaScript,我们可以使用以下语法通过id获取元素:
var x=document.getElementById("by_id");
Run Code Online (Sandbox Code Playgroud)
我试着按顺序逐个获取:
var y=document.getElementByClass("by_class");
Run Code Online (Sandbox Code Playgroud)
但它导致了错误:
getElementByClass is not function
Run Code Online (Sandbox Code Playgroud)
我怎样才能通过它的类得到一个元素?
Eli*_*gem 227
实际上getElementsByClassName
,DOM函数的名称并不是getElementByClassName
因为页面上的多个元素可以具有相同的类,因此:Elements
.
它的返回值将是NodeList实例,或者是NodeList
(FF,例如返回实例HTMLCollection
)的超集.无论如何:返回值是一个类似数组的对象:
var y = document.getElementsByClassName('foo');
var aNode = y[0];
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你需要将返回对象作为数组,那么你可以很容易地做到这一点,因为它具有魔法长度属性:
var arrFromList = Array.prototype.slice.call(y);
//or as per AntonB's comment:
var arrFromList = [].slice.call(y);
Run Code Online (Sandbox Code Playgroud)
根据caniuse.com的说法querySelector('.foo')
,正如yckart建议并且querySelectorAll('.foo')
更可取的是,因为它们确实得到了更好的支持(93.99%对87.24%):
yck*_*art 49
另一种选择是使用,querySelector('.foo')
或者querySelectorAll('.foo')
拥有比浏览器更广泛的支持getElementsByClassName
.
http://caniuse.com/#feat=queryselector
http://caniuse.com/#feat=getelementsbyclassname
udi*_*idu 24
你需要使用 document.getElementsByClassName('class_name');
并且不要忘记返回的值是一个元素数组,所以如果你想要第一个使用:
document.getElementsByClassName('class_name')[0]
您可以使用
getElementsByClassName
Run Code Online (Sandbox Code Playgroud)
假设您有一些元素并且应用了类名'test',那么,您可以获得如下的元素
var tests = document.getElementsByClassName('test');
Run Code Online (Sandbox Code Playgroud)
它返回一个实例NodeList
或其超集:HTMLCollection
(FF).