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实现的简单烟花特效代码
Oct 20 Javascript
js HTML5手机刮刮乐代码
Sep 29 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
Jan 09 Javascript
详解Sea.js中Module.exports和exports的区别
Feb 12 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
Express URL跳转(重定向)的实现方法
Apr 07 Javascript
webpack手动配置React开发环境的步骤
Jul 02 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
js replace替换字符串同时替换多个方法
Nov 27 Javascript
微信小程序的线程架构【推荐】
May 14 Javascript
Vue父子之间值传递的实例教程
Jul 02 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中的超全局变量
2006/10/09 PHP
php 引用(&amp;)详解
2009/11/20 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
信息部岗位职责
2013/11/12 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
政治思想表现评语
2014/05/04 职场文书
会计毕业生自荐书
2014/06/12 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
python实现简单的井字棋
2021/05/26 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS