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的一句话搞定手风琴菜单
Sep 14 Javascript
JS限制文本框只能输入数字和字母方法
Feb 28 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
Jun 08 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
详解vue-router数据加载与缓存使用总结
Oct 29 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 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 引用(&amp;)详解
2009/11/20 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP函数超时处理方法
2016/02/14 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
Python中的闭包实例详解
2014/08/29 Python
python人人网登录应用实例
2014/09/26 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Django密码存储策略分析
2020/01/09 Python
Python数据正态性检验实现过程
2020/04/18 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
北大研究生linux应用求职信
2013/10/29 职场文书
整改通知书格式
2015/04/22 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技