JS选取DOM元素的简单方法


Posted in Javascript onJuly 08, 2016

摘自JavaScript权威指南(jQuery根据样式选择器查找元素的终极方式是 先用getElementsByTagName(*)获取所有DOM元素,然后根据样式选择器对所有DOM元素进行筛选)

今天试了下各种选取元素的方法的速度,用原生的方法比jQuery要快差不多8倍,IE8是最慢的,IE9的速度差不多是IE8的3倍,Chrome的表现最好,其次是Firefox)

选取文档元素的方法:

1、通过ID选取元素(getElementById)

1)使用方法:document.getElementById("domId")
   其中,domId为要选取元素的id属性值

2)兼容性:低于IE8版本的IE浏览器对getElementById方法的实现是不区分元素ID号的大小写的,并且会返回匹配name属性的元素。

2、通过名称name选取元素(getElementsByName)

1)使用方法:document.getElementsByName("domName")
    其中,domName为要选取元素的name属性值

2)说明:a. 返回值是一个nodeList集合(区别于Array)

b. 和ID属性不一样,name属性只在少数DOM元素中有效(form表单、表单元素、iframe、img)。这是因为name属性是为了方便提交表单数据而打造的。

c. 为form、img、iframe、applet、embed、object元素设置name属性时,会自动在Document对象中创建以该name属性值命名的属性。所以可以通过document.domName引用相应的dom对象

3)兼容性:IE中ID属性值匹配的元素也会一起返回

3、通过标签名选取元素(getElementsByTagName)

1)使用方法:element.getElementsByTagName("tagName")
   其中,element是有效的DOM元素(包括document)

tagName是DOM元素的标签名

2)说明:a. 返回值是一个nodeList集合(区别于Array)
b. 该方法只能选取调用该方法的元素的后代元素。
c. tagName不区分大小写
d. 当tagName为*时,表示选取所有元素(需遵从b.规则)
e. HTMLDocument会定义一些快捷属性来访问标签节点。如:document的images、forms、links属性指向<img>、<form>、<a>标签元素集合,而document.body和document.head总是指向body和head标签(当未显示声明head标签时,浏览器也会创建document.head属性)

4、通过CSS类选取元素(getElementsByClassName)

1)使用方法:element.getElementsByClassName("classNames")
其中,element是有效的DOM元素(包括document)
classNames是CSS类名称的组合(多个类名之间用空格,可以是多个空格隔开),
如element.getElementsByClassName("class2 class1")将选取elements后代元素中同时应用了class1和class2样式的元素(样式名称不区分先后顺序)

2)说明:a. 返回值是一个nodeList集合(区别于Array)

b. 该方法只能选取调用该方法的元素的后代元素。

3)兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

5、通过CSS选择器选取元素

1)使用方法:document.querySelectorAll("selector")
其中,selector为合法的CSS选择器

2)说明:a. 返回值是一个nodeList集合(区别于Array)

3)兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法

以上这篇JS选取DOM元素的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简明json介绍
Sep 28 Javascript
15 个 JavaScript Web UI 库
May 19 Javascript
javascript一元操作符(递增、递减)使用示例
Aug 07 Javascript
详解JS函数重载
Dec 04 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
封装获取dom元素的简单实例
Jul 08 #Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 #Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 #Javascript
Augularjs-起步详解
Jul 08 #Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 #Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 #Javascript
Angularjs---项目搭建图文教程
Jul 08 #Javascript
You might like
PHP实现对数组分页处理实例详解
2017/02/07 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
详解Python如何获取列表(List)的中位数
2016/08/12 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python中的decimal类型转换实例详解
2019/06/26 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
生产班组长岗位职责
2014/01/05 职场文书
质量主管工作职责
2014/09/26 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
检讨书范文
2015/01/27 职场文书
稽核岗位职责范本
2015/04/13 职场文书
学生会工作感言
2015/08/07 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
初三数学教学反思
2016/02/17 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
灵能百分百第三季什么时候来?
2022/03/15 日漫