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核心支持代码分享
May 23 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
JavaScript调用ajax获取文本文件内容实现代码
Mar 28 Javascript
javascript实现简单的省市区三级联动
May 14 Javascript
jquery对象和DOM对象的相互转换详解
Oct 18 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
微信小程序实现文件预览
Oct 22 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二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python实现的计算器功能示例
2018/04/26 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Python 画出来六维图
2019/07/26 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
python selenium 获取接口数据的实现
2020/12/07 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
九年级语文教学反思
2014/02/04 职场文书
培训专员岗位职责
2014/02/26 职场文书
安踏广告词改编版
2014/03/21 职场文书
人事任命书格式
2014/06/05 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL