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 相关文章推荐
JavaScript 获取用户客户端操作系统版本
Aug 25 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
Oct 21 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
Jan 26 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
JavaScript获取数组最小值和最大值的方法
Jun 09 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
前端jquery部分很精彩
May 03 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
JavaScript轮播停留效果的实现思路
May 24 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 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实现设计模式中的单例模式详解
2014/10/11 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python插入排序算法实例分析
2015/07/03 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
python word转pdf代码实例
2019/08/16 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
学生自我鉴定
2013/12/18 职场文书
社区消防工作实施方案
2014/03/21 职场文书
路政管理求职信
2014/06/18 职场文书
2014年设计师工作总结
2014/11/25 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers