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 从if else 到 switch case 再到抽象
Jul 17 Javascript
actionscript与javascript的区别
May 25 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
Aug 14 Javascript
javascript类型转换使用方法
Feb 08 Javascript
ajax请求乱码的解决方法(中文乱码)
Apr 10 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
AngulerJS学习之按需动态加载文件
Feb 13 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
vue 使用v-for进行循环的实例代码详解
Feb 19 Javascript
Node.js fs模块原理及常见用途
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查看当前Session的ID实例
2015/03/16 PHP
php中动态变量用法实例
2015/06/10 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
理解JSON:3分钟课程
2011/10/28 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
保密承诺书
2014/03/27 职场文书
大学新生入学教育方案
2014/05/16 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2015年化验员工作总结
2015/04/10 职场文书