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 相关文章推荐
基于jquery实现的服务器验证控件的启用和禁用代码
Apr 27 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
Dec 01 Javascript
在Mac下彻底卸载node和npm的方法
May 16 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
详解React 条件渲染
Jul 08 Javascript
JavaScript分页组件使用方法详解
Jul 26 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
一个简单计数器的源代码
2006/10/09 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python使用一行代码获取上个月是几月
2018/08/30 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python感知机实现代码
2019/01/18 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python实现日志按天分割
2019/07/22 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
石油大学毕业生自荐信
2014/01/28 职场文书
小学体育教学反思
2014/01/31 职场文书
远程培训的心得体会
2014/09/01 职场文书
校运会新闻稿
2015/07/17 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Python list列表删除元素的4种方法
2021/11/01 Python