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 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
js模拟滚动条(横向竖向)
Feb 22 Javascript
jQuery插件简单实现方法
Jul 18 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
深入浅析Node.js单线程模型
Jul 10 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
Swiper.js实现移动端元素左右滑动
Sep 08 Javascript
JQuery省市联动效果实现过程详解
May 08 jQuery
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 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中JSON的使用与转换
2015/01/14 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php操作redis缓存方法分享
2015/06/03 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
angular.element方法汇总
2015/01/07 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
详解Vite的新体验
2021/02/22 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
C#公司笔试题
2014/03/28 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
群众路线党课主持词
2014/04/01 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
大学毕业生推荐信
2014/07/09 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技