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 相关文章推荐
解密效果
Jun 23 Javascript
网页中的图片的处理方法与代码
Nov 26 Javascript
JavaScript打开word文档的实现代码(c#)
Apr 16 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
Dec 09 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
JQuery中clone方法复制节点
May 18 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
three.js如何实现3D动态文字效果
Mar 03 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
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
vue-router单页面路由
2017/06/17 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python 求数组局部最大值的实例
2019/11/26 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
Pytorch转tflite方式
2020/05/25 Python
Python 高效编程技巧分享
2020/09/10 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
公司营业员的自我评价
2014/03/04 职场文书
士力架广告词
2014/03/20 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书