javascript基础之查找元素的详细介绍(访问节点)


Posted in Javascript onJuly 05, 2013

当然这些选择器都是jQuery扩展的一些方法,那么使用原生js时要怎样来查找元素呢?今天就来简单梳理下。

DOM定义了多种查找元素的方法,除了我们常用的getElementById(),还有getElementsByTagName()和getElementsByName()。使用这几种方法方法我们可以查找html文档中的任意html元素。

getElementById()
首先来看下getElementById(),这个方法很简单,只需在参数中传入html标签的id属性值即可,由于html页面中的id具有唯一性,因此该方法返回的是单个元素对象。例如:

<span id="span1">span标签</span>
 <script>
     var oSpan = document.getElementById('span1'); //查找span元素
     alert(oSpan.innerHTML); //弹出span标签中的内容
 </script>

getElementsByTagName()
getElementsByTagName()参数需传入的是一个html标签名,它返回的是html文档中所有与之匹配的元素列表,这个列表具有部分数组的特性,因此也称其为类数组。当我们想操作某个特定的元素时,我们可以使用数组索引或item()来实现,例如:
<script>
     var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一个元素列表
     /* 操作特定元素 */
     alert(oDiv[0].innerHTML) //弹出第一个div中的内容
     alert(oDiv.item(1).innerHTML) //弹出第二个div中的内容
 </script>

当然我们还可以通过length属性来循环遍历节点:
<script>
     var oDiv = document.getElementsByTagName('div'); 
     for(var i = 0; i < oDiv.length; i++){
         //do something
     }
 </script>

getElementsByName()
getElementsByName()常用来查找表单元素,参数中传入html标签的name属性值,由于文档中多个html标签的name值可能相同(如单选按钮),因此该方法返回的也是一个元素列表。具体操作方法与getElementsByTagName()类似,这里不在赘述。
<script>
     var oIpt= document.getElementsByName('city'); //查找name值为city的元素 
     alert(oIpt[0].value);
     alert(oIpt.item(1).value);
 </script>

getByClass()
虽然使用上面的几种方法已经可以满足常见需求,但是为了更方便的访问元素节点,我们一般会自己封装一个通过class来查找元素的方法:
<script>
     /** getByClass **/
     function getByClass(oParent, sClass){
         var aEle = oParent.getElementsByTagName('*');
         var re = new RegExp('\\b' + sClass + '\\b');
         var aResult = [];
         for(var i = 0; i < aEle.length; i++){
             if(re.test(aEle[i].className)){
                 aResult.push(aEle[i]);
             }
         }
         return aResult;
     }
 </script>

getByClass需传入两个参数,其中oParent为参考节点,即在oParent节点中查找元素,sClass为要查找的元素class的值。通过循环将oParent内的html标签的class值与传入的sClass值一一对比,符合条件的会存入到数组aResult中,最后再返回这个数组。

另外这里之所以用正则来匹配而没有直接用aEle[i].className == sClass,是避免标签的class值为多个时,出现匹配失效的情况。

Javascript 相关文章推荐
Javascript学习笔记-详解in运算符
Sep 13 Javascript
Javascript引用指针使用介绍
Nov 07 Javascript
一道JS前端闭包面试题解析
Dec 25 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
Aug 20 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
Sep 22 Javascript
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
vue使用laydate时间插件的方法
Nov 14 Javascript
vue中实现高德定位功能
Dec 03 Javascript
vue实现从外部修改组件内部的变量的值
Jul 30 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 Javascript
js文件缓存之版本管理详解
Jul 05 #Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 #Javascript
把input初始值不写value的具体实现方法
Jul 04 #Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
Jul 04 #Javascript
简单实用jquery版三级联动select示例
Jul 04 #Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 #Javascript
js将控件隐藏的方法及display属性介绍
Jul 04 #Javascript
You might like
GD输出汉字的函数的分析
2006/10/09 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
django 中QuerySet特性功能详解
2019/07/25 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
python怎么判断模块安装完成
2020/06/19 Python
win10安装python3.6的常见问题
2020/07/01 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
喝酒检查书范文
2014/02/23 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书