JS教程:childNodes与parentNode

2016-02-20 01:13 29 1 收藏

下面是个简单易学的JS教程:childNodes与parentNode教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

如果你是高手,对于childNodes与parentNode并不陌生。其实他们就是DOM的两个特性/方法而以。

childNodes:表示对象的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

parentNode:表示对象的父级节点。

当我解释完这两个方法以后,可能有人会问,他们有什么用,嘿嘿,当然有用,我们下面有一个例子来说明他们的作用。

如果我们有一个ul列表,大家都知道ul中只能放li标签,但是li标签中我们还可以放入ul,那么这个ul中必然就有li,但是我现在有一个要求就是我想为第一个ul下面的第一级li鼠标移上去的时候加一个样式,这样一个需求我们应该怎么做呢?请看效果及代码:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)
   ul id="abc"      li id="ccc"ul         li id="ddd"aaa/li         liaa/li         lidd/li         lidd/li         lidd/li      /ul/li      lidas/li      lidadf/li      lidsaf/li      lisdafu ul         liadfsaf/li         lisdaf/li         lisdaf/li         liasdf/li         lisfa/li      /ul /li      liaa/li   /ulscript  type="text/javascript"!--(function() {   var ulList = document.getElementById("abc");   var ulListChild = ulList.childNodes;   for (var i=0; iulListChild.length; i+=1) {      ulListChild[i].onmouseover = function() {      this.style.border = "1px solid #ccc;";      }   }})();//--/script

当然这段代码的效果并不好,我只是想说明的是,childNodes是获取到的是id为abc的ul下的第一级li,我们以鼠标移到li上,鼠标加上边框的时候可以看出,当我们鼠标移到li下ul下的li时,并没有加上边框。下面我们可以用另外一串代码来查看效果:

   ul id="abc"      li id="ccc"ul         li id="ddd"aaa/li         liaa/li         lidd/li         lidd/li         lidd/li      /ul/li      lidas/li      lidadf/li      lidsaf/li      lisdafu ul         liadfsaf/li         lisdaf/li         lisdaf/li         liasdf/li         lisfa/li      /ul /li      liaa/li   /ulscript  type="text/javascript"!--(function() {   var ulList = document.getElementById("abc");   var ulListChild = ulList.childNodes;   alert(ulListChild.length);   for (var i=0; iulListChild.length; i+=1) {      for (var j=0; julListChild[i].childNodes.length; j+=1 ) {         for (var k=0; kulListChild[i].childNodes[j].childNodes.length; k+=1) {             ulListChild[i].childNodes[j].childNodes[k].onmouseover = function() {                this.style.border = "1px solid #ccc;";             }         }      }   }})();//--/script

我的写法就已经相当复杂了,因为我也是菜鸟,我也是初学者,只是想说明一个事情而以。

我们可以看到一个代码块中是ID为abc的子元素,而第二个代码块却是第一级li下面的li加上了边框。

我们在来看看他们的关系,也就是parentNode方法。请查看效果:

   ul id="abc"      li id="ccc"ul         li id="ddd"aaa/li         liaa/li         lidd/li         lidd/li         lidd/li      /ul/li      lidas/li      lidadf/li      lidsaf/li      lisdafu ul         liadfsaf/li         lisdaf/li         lisdaf/li         liasdf/li         lisfa/li      /ul /li      liaa/li   /ulscript  type="text/javascript"!--(function() {   var ulList = document.getElementById("abc");   var ulListLi = document.getElementById("ccc") ;   var ulListLiLi = document.getElementById("ddd") ;   alert(ulListLi.parentNode === ulList);//true   alert(ulListLiLi.parentNode === ulList);//false   alert(ulListLiLi.parentNode === ulListLi.childNodes[0]);//true})();//--/script

不难看出他们之间的关系,ulListLi.childNodes[0]这里代表的是id为ccc下面的第一个元素,其实这里也可以写成firstChild,嘿嘿,以后在说这个方法。

注意:火狐在获取childNodes的时候,在计算上有一些特别。

来源:https://www.tulaoshi.com/n/20160220/1633514.html

延伸阅读
标签: Web开发
由于 windowonload 事件需要在页面所有内容(包括图片等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本。其实在现在大部分主流浏览器上(Firefox 3+,Opera 9+,Safari 3+,Chrome 2+)都提供了这一事件方法: 。 documentaddEventListener init 那对于 IE 我们如何模拟 addDOMLoadEvent 事件呢? Matthias Mille...
标签: Web开发
一、在JSP中访问JS返回的值: 问题: 代码如下: script language="javascript" !-- var str="123"; % String aa; % -- /script 怎么让这个JSP里的aa获得JAVASCRIPT中str的值???? 详细一点就是: 代码如下: script language="javascript" function returnValue(){ var myform=document.form1; var str=myform.text1.value; ...
要写个滑动展开折叠的效果,搜索到无忧脚本的一篇贴子,稍加修改了下使其在FF也可应用,代码如下:  <script type="text/javascript"  //Url: http://bbs.51js.com/thread-61646-1-1.html  //Author: 风云突变  //Modify: 枫岩  var act;  function over(s,nMax){  ...
标签: Web开发
lightbox源码解析 function getPageScroll(){ var yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; //NS } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict yScroll = document.documentElement.scrollTop; } else if (document.body) {// all other Explorer...
标签: Web开发
数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] ...

经验教程

177

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部