选择器
1.id选择器(有唯一性)
getElementById():只有在作为 document
的方法时才能起作用,而在DOM中的其他元素下无法生效。这是因为 ID 值在整个网页中必须保持唯一。因此没有必要为这个方法创建所谓的 “局部” 版本。getElementById方法**不会搜索不在文档中的元素。**当创建一个元素,并且分配ID后,你必须要使用insertBefore或其他类似的方法把元素插入到文档中,之后才能使用 getElementById 获取到:
var element = document.createElement("div");
element.id = 'testqq';
var el = document.getElementById('testqq'); // el 是个 null
2.类名选择器
getElementsByClassName():返回一个包含了所有指定类名的子元素的类数组对象。当在document对象上调用时,会搜索整个DOM文档,包含根节点。你也可以在任意元素上调用getElementsByClassName()
方法,它将返回的是以当前元素为根节点,所有指定类名的子元素。
获取所有 class 为 ‘test’ 的元素:
document.getElementsByClassName('test');
获取所有 class 同时包括 ‘red’ 和 ‘test’ 的元素.
document.getElementsByClassName('red test');
在id 为’main’的元素的子节点中,获取所有class为’test’的元素
document.getElementById('main').getElementsByClassName('test');
我们还可以对任意的 HTMLCollection
使用 Array.prototype 的方法,调用时传递 HTMLCollection 作为方法的参数。这里我们将查找到所有class为 ‘test’ 的 div 元素:
var testElements = document.getElementsByClassName('test');
var testDivs = Array.prototype.filter.call(testElements, function(testElement){
return testElement.nodeName === 'DIV';
});
3.name选择器
getElementsByName(name) :
语法:
elements = document.getElementsByName(name)
elements
是一个实时更新的 NodeList
集合。
name是元素的
name属性的值。
4.标签名选择器
**getElementsByTagName():**方法返回一个动态的包含所有指定标签名的元素的HTML集合HTMLCollection
。指定的元素的子树会被搜索,不包括元素自己。返回的列表是动态的,这意味着它会随着DOM树的变化自动更新自身。所以,使用相同元素和相同参数时,没有必要多次的调用Element.getElementsByTagName()
.
如果是HTML文档中的某个元素调用了getElementsByTagName函数,
运行前会将参数转为小写字母形式。故不建议在驼峰式命名的SVG元素中使用。 Element.getElementsByTagNameNS()
适用于那种情况.
Element.getElementsByTagName
和 Document.getElementsByTagName()
类似,除了它的搜索被限制为指定元素的后代。
5.查询选择器()
querySelector(查询选择器):根据选择器来查找元素
querySelectorAll