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操作select方法汇总
Feb 05 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
探究JavaScript函数式编程的乐趣
Dec 14 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
Jun 17 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
详解ECMAScript typeof用法
Jul 25 Javascript
Vue.js实现表格渲染的方法
Sep 07 Javascript
6行代码实现微信小程序页面返回顶部效果
Dec 28 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 Javascript
javascript实现一款好看的秒表计时器
Sep 05 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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创建多级目录代码
2008/06/05 PHP
php数据库抽象层 PDO
2011/05/07 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
商超业务员岗位职责
2014/03/12 职场文书
项目合作意向书范本
2014/04/01 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript