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 相关文章推荐
jQuery 表单验证扩展(四)
Oct 20 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
常用jQuery代码分享
Jul 14 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
使用JS动态显示文本
Sep 09 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
vue父子组件的通信方法(实例详解)
Nov 10 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
Element Input组件分析小结
2018/10/11 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
python针对excel的操作技巧
2018/03/13 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
wxpython绘制音频效果
2019/11/18 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
信息与计算科学专业推荐信
2014/02/23 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
教师听课学习心得体会
2016/01/15 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python