写作目的:
1 2 3 4
| 想要操作DOM中的元素,最基本的是把他们准确的选择出来。 而选择的办法有很多种,要为元素设置样式,可以通过css选择器来选择。 要实现程序逻辑,可以用JS把元素选择出来,也可以用更强大的jQuery选择器。 这一节主要写写JS如何选取文档元素。它有五种选取文档元素的方法,这里会一一列出。
|
选取文档元素的方法
1 2 3 4 5
| 1.用指定的元素id 2.用指定的name属性 3.用指定的标签名字 4.用指定的CSS类名 5.匹配指定的css选择器
|
1.用指定的元素id
1
| var elt = document.ElementById("idname");
|
- 同一个文档中的元素ID是唯一的,所以这样选择出来的是唯一元素。
通过ID查找多个元素
2.用指定的name属性
- name可能返回多个元素
- name属性只在少数HTML元素中有效,包括表单、表单元素、“iframe”和“img”元素
1
| var elt = document.getElementsByName("xxx");
|
- getElementsByName()定义在HTMLDocument类中,所以只针对HTML文档,XML文档不可用。
- 返回一个Nodelist对象
- 在IE中,getElementsByName()也返回id属性匹配指定值的元素,所以,为了兼容,应该避免同样的字符串同时用作name和id
3.用指定的标签名
- 选定多个元素,返回一个Nodelist对象,其中的元素按照在文档中的顺序排序
1 2
| var firstpara = document.getElementsByTagName('p')[0]; var firstparaSpans = firstpara.getElementByTagName("span");
|
以上两句代码,第一句是document定义的getElementsByTagName()方法,它选取所有匹配到的标签元素,第二句是Element类定义的,它选取调用该方法的元素的后代元素。
另外,HTMLDocument类定义了一些快捷属性来访问一些节点。
1 2 3 4
| document.forms.address; document.body document.head document.documentElement
|
4.用指定的css类名
- 返回一个Nodelist对象
- 因为我们可以为一个元素添加多个类名,所以此方法的参数可以是空格隔开的多个标识符
1
| var elt = document.getElementsByClassName("class1 class2");
|
5.匹配css选择器选取
- Document类的方法querySelectorAll()和querySelector()方法,括号里面就是前面说过的各种css选择器语法。
- css选择器在前面文字中已经谈过,其中除了一些伪类选择器用JS方法选择会不匹配,其余的选择器语法都可以用
1 2 3 4
| var elts = document.querySelectorAll("div+p"); for(var i = 0;i<h1.length;i++){ elts[i].style.borderRadius = "10px"; }
|
以上代码使用前面两节的例子,结果图如下:
结果完全一样。
从上面我们可以看出,其实jquery选择是封装了以上函数,并在其基础上做了扩展。但是对js源码我们还是要了解的。在写以上这些的时候,要注意一些兼容性的问题。这些在犀牛书15章有详细记载。