JavaScript中常见获取元素的方法汇总


Posted in Javascript onMarch 04, 2015

常见的获取元素的方法有3种,分别是通过元素ID、通过标签名字和通过类名字来获取。

getElementById

DOM提供了一个名为getElementById的方法,这个方法将返回一个与之对应id属性的节点对象。使用的时候请注意区分大小写。

它是document对象特有的函数,只能通过其来调用该方法。其使用的方法如下:

document.getElementById('demo') //demo是元素对应的ID

该方法兼容主流浏览器,甚至包括IE6+,可以大胆使用。

getElementsByTagName

该方法返回一个对象数组(准确的说是HTMLCollection集合,它不是真正意义上的数组),每个对象分别对应着文档里有着给定标签的一个元素。类似于getElementById,同样,该方法只提供一个参数,它的参数是指定标签的名字,示例代码如下:

document.getElementsByTagname('li')  //li是标签的名字

需要注意的是,该方法除了能被document对象调用之外,还可以被普通的元素调用。示例如下:

var demo = document.getElementById('demo');

var lis = demo.getElementsByTagname('li');    

同样,该方法兼容主流浏览器,甚至包括IE6+,可以大胆使用。

getElementsByClassName

除了通过指定标签获取元素外,DOM还提供了getElementsByClassName方法来获取指定class名的元素。不过由于该方法比较新,较老的浏览器还不支持,比如IE6。不过我们可以通过hack方式来弥补老浏览器缺陷。该方法调用的方式如下所示:

document.getElementsByClassName('demo')    //demo为元素指定的class名

和getElementsByTagname一样, 该方法除了能被document对象调用之外,还可以被普通的元素调用。

对于比较老的浏览器,比如IE6、7我们可以通过下面的hack方式来实现:

function getElementsByClassName(node,classname){

        if(node.getElementsByClassName) {

            return node.getElementsByClassName(classname);

        }else {

            var results = [];

            var elems = node.getElementsByTagName("*");

            for(var i = 0; i < elems.length; i++){

                if(elems[i].className.indexOf(classname) != -1){

                    results[results.length] = elems[i];

                }

            }

            return results;

        }

    }  

拓展

如果你不仅仅满足上面那些元素选择的方法,想和JQuery一样,能通过选择器来获取元素,实现的方法和上面的getElementsByClassName差不多,如果有兴趣自己可以实现一套选择器。不过我觉得有上面的三个方法再结合事件冒泡,已经够用了,毕竟这三种性能上算是优秀的。

以上就是本文的全部内容了,希望对大家能够有所帮助。

Javascript 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
JavaScript Distilled 基础知识与函数
Apr 07 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
jquery的父子兄弟节点查找示例代码
Mar 03 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
微信小程序如何实现全局重新加载
Jun 05 Javascript
vue不操作dom实现图片轮播的示例代码
Dec 18 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 #Javascript
JavaScript设置获取和设置属性的方法
Mar 04 #Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 #Javascript
深入探讨javascript中的数据类型
Mar 04 #Javascript
深入理解JavaScript系列(49):Function模式(上篇)
Mar 04 #Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
Mar 04 #Javascript
jQuery中大家不太了解的几个方法
Mar 04 #Javascript
You might like
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
jquery实现图片预加载
2015/12/25 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python实现数据写入excel表格
2018/03/25 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Python多分支if语句的使用
2020/09/03 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
行政总监岗位职责
2013/12/05 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
车辆工程专业求职信
2014/04/28 职场文书
运动会通讯稿600字
2015/07/20 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫