javascript 获取HTML DOM父,子,临近节点
在Web应用程序特别是Web2.0程序开发中。常常要获取页面中某个元素,然后更新该元素的样式、内容等。怎样获取要更新的元素,是首先要解决的问题。令人欣慰的是,使用JavaScript获取节点的方法有非常多种,这里简单做一下总结(下面方法在IE7和Firefox2.0.0.11測试通过):
1. 通过顶层document节点获取:
(1) document.getElementById(elementId):该方法通过节点的ID。能够准确获得须要的元素。是比較简单快捷的方法。
假设页面上含有多个同样id的节点。那么仅仅返回第一个节点。
现在。已经出现了如prototype、Mootools等多个JavaScript库,它们提供了更简便的方法:$(id),參数仍然是节点的id。
这种方法能够看作是
document.getElementById()的第二种写法。只是$()的功能更为强大,详细使用方法能够參考它们各自的API文档。
(2)document.getElementsByName(elementName):该方法是通过节点的name获取节点,从名字能够看出。这种方法返回的不是一个节点元素,而是具有相同名称的节点数组。
然后,我们能够通过要获取节点的某个属性来循环推断是否为须要的节点。
比如:在HTML中checkbox和radio都是通过同样的name属性值,来标识一个组内的元素。假设我们如今要获取被选中的元素。首先获取改组元素。然后循环推断是节点的checked属性值是否为true就可以。
(3)document.getElementsByTagName(tagName):该方法是通过节点的Tag获取节点,相同该方法也是返回一个数组,比如:
document.getElementsByTagName('A')将会返回页面上全部超链接节点。在获取节点之前,一般都是知道节点的类型的,所以使用该方法比較简单。可是缺点也是显而易见,那就是返回的数组可能十分庞大,这样就会浪费非常多时间。那么,这种方法是不是就没实用处了呢?当然不是,这种方法和上面的两个不同,它不是document节点的专有方法,还能够应用其它的节点,以下将会提到。
2、通过父节点获取:
(1)parentObj.firstChild:假设节点为已知节点(parentObj)的第一个子节点就能够使用这种方法。
这个属性是能够递归使用的,也就是支持
parentObj.firstChild.firstChild.firstChild...的形式。如此就能够获得更深层次的节点。
(2)parentObj.lastChild:非常显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也能够递归使用。
在使用中。假设我们把二者结合起来。那么将会达到更加令人兴奋的效果,即:parentObj.firstChild.lastChild.lastChild...
(3)parentObj.childNodes:获取已知节点的子节点数组,然后能够通过循环或者索引找到须要的节点。
注意:经測试发现,在IE7上获取的是直接子节点的数组。而在Firefox2.0.0.11上获取的是全部子节点即包含子节点的子节点。
(4)parentObj.children:获取已知节点的直接子节点数组。
注意:经測试,在IE7上,和childNodes效果一样。而Firefox2.0.0.11不支持。
这也是为什么我要使用和其它方法不相同式的原因。因此不建议使用。
(5)parentObj.getElementsByTagName(tagName):用法不再赘述,它返回已知节点的全部子节点中类型为指定值的子节点数组。
比如:
parentObj.getElementsByTagName('A')返回已知的子节点中的全部超链接。
3、通过临近节点获取:
(1)neighbourNode.previousSibling:获取已知节点(neighbourNode)的前一个节点。这个属性和前面的firstChild、lastChild一样都似乎能够递归使用的。
(2)neighbourNode.nextSibling:获取已知节点(neighbourNode)的下一个节点,相同支持递归。4、通过子节点获取:
(1)childNode.parentNode:获取已知节点的父节点。
上面提到的方法。仅仅是一些主要的方法,假设使用了Prototype等JavaScript库,可能还获得其它不同的方法。比如通过节点的class获取等等。只是,假设可以灵活运用上面的各种方法。相信应该可以应付大部分的程序。
javascript 获取HTML DOM父,子,临近节点的更多相关文章
- javascript arcgis 取区域中心点
javascript arcgis 取区域中心点 //graphic是绘制完多边形之后返回的对象 //获得多边形的中心点坐标 var centerPoint=graphic.geometry.getE ...
- SQL获取当前时间(日期)
--获取当前日期(如:yyyymmdd) select CONVERT (nvarchar(12),GETDATE(),112) --获取当前日期(如:yyyymmdd hh:MM:ss) selec ...
- 台州学院第十二届校赛记录(B,C,E,H,I,J,L)
传送门:点我 题目很棒,感谢出题验题的大佬们. 细节坑不少,是好事. 还是很菜,继续加油! B: 桃子的生日 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KBy ...
- kettle转换JavaScript获取命令行参数
日常开发中由于很多参数是变化的,需要在部署时才能确定.而写在配置文件里又显得很笨重,因而可以运行时实时指定.那么kettle是怎么获取命令行中的参数的呢? kettle可以通过转换里的JavaScri ...
- Javascript作业—取字符串的第一个只出现一次的字母
js作业 取字符串第一个只出现一次的字母 <script type='text/javascript'> //取a-z字符串中第一个只出现一次的字母 function firstUniqu ...
- jquery 与javascript关系 ①取元素 ②操作内容 ③操作属性 ④操作 样式 ⑤ 事件 点击变色
jQuery的min版本和原版功能是一样的,min版主要应用于已经开发成的网页中,而非min版 的文件比较大,里面有整洁的代码书写规范和注释,主要应用于脚本开发过程当中. JQuery是继protot ...
- 2016/4/1 jquery 与javascript关系 ①取元素 ②操作内容 ③操作属性 ④操作 样式 ⑤ 事件 点击变色
jQuery的min版本和原版功能是一样的,min版主要应用于已经开发成的网页中,而非min版 的文件比较大,里面有整洁的代码书写规范和注释,主要应用于脚本开发过程当中. JQuery是继protot ...
- JavaScript的取值小技巧之“中括号[]取值法”
一.简介 做下记录,今天看了一篇很有意思的文章,学到了这个取值的小技巧 正常的话我们一般都是用对象直接去'.'对应的属性名(也就是键值对的键)来获取对应的值 这里记录的是另一种取值方式,他是采用中括号 ...
- VC 获 取 当前程序运行路径的几种方法
1.使用APi函数GetModuleFileName char path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH); //获取 ...
随机推荐
- Shell应用之网卡流量监测
需求分析 1)按固定时间监测一次网卡流量 2)当网卡流量为0时重启网卡 一.网卡流量查询 sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分 ...
- 【Henu ACM Round#16 E】Paths and Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉很像一道最短路. 然后就试了一发. 结果真的是.. 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是 ...
- 【Henu ACM Round#19 E】 Om Nom and Candies
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 紫书上的原题: 链接 [代码] #include <bits/stdc++.h> #define ll long lon ...
- eclipse maven install 时控制台乱码问题解决
pom.xml文件中加入: <properties> <argLine>-Dfile.encoding=UTF-8</argLine> <project.bu ...
- 把握linux内核设计思想(三):下半部机制之软中断
[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 中断处理程序以异步方式执行,其会打断其它重要代码,其执行时该中 ...
- atitit.js 与c# java交互html5化的原理与总结.doc
atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略 1 1.1. Js交互 1 1.2. 动态參数个数 1 1.3. 事件监听 2 2. ...
- 在IIS中给某一个网站添加binding的坑
以http为例, 假如ip地址从局域网的地址172.31.212.20改为127.0.0.1 但是网站没法访问了http://172.31.212.20/chile.backoffice/ 必须通过 ...
- VB.NET中文双引号的处理方法
相信朋友们也都碰到了这样的问题了,VS的IDE会不分青红皂白的把中文双引号变成英文的双引号,当然可以通过关闭自动重排功能来回避这个问题,但不是一个好的解决办法,以下这个方式不错: 如果在实际的使用中我 ...
- Active Object 并发模式在 Java 中的应用--转载
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/ 本文主要从以下两个方面进行阐述: 使用 C++ 语言,来描述 Act ...
- USB摄像头驱动框架分析(五)
一.USB摄像头驱动框架如下所示:1.构造一个usb_driver2.设置 probe: 2.1. 分配video_device:video_device_alloc ...