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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
React Native预设占位placeholder的使用
Sep 28 Javascript
js仿微信抢红包功能
Sep 25 Javascript
vee-validate vue 2.0自定义表单验证的实例
Aug 28 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
d3.js实现图形缩放平移
Dec 19 Javascript
JavaScript中交换值的10种方法总结
Aug 18 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
spyder常用快捷键(分享)
2017/07/19 Python
Python实现简单的语音识别系统
2017/12/13 Python
python实现简单多人聊天室
2018/12/11 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
python实现文件的分割与合并
2019/08/29 Python
python编写计算器功能
2019/10/25 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python如何将图片转换素描画
2020/09/08 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
Java程序员综合测试题
2014/04/25 面试题
室内拓展活动方案
2014/02/13 职场文书
年检委托书
2014/08/30 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL