今天学习了JS中的DOM的内容,虽然小菜的理解不深,但希望能够记录下来,慢慢一点一点的进步,有更深的理解了,再回来补充。

首先,关于DOM的概念:

1.概念:DOM = document(文档)Object(对象)Model(模型)

    文档:就是我们所说的html的页面

    对象:指的是html页面中的元素,也成为标签

    文档对象模型:则是规定的一系列能够为了让我们用JS更好操作页面元素的标准

2.在DOM下把文档当作树状结构,同时定义了很多方法来操作树中的每一个分支元素(节点)

  

3.如何寻找子节点

  要寻找元素的子节点的方法有很多,但大部分都具有兼容性问题额,以上图的ul、li为例讨论下面的方法

  <ul id = "oUl">

    <li>111</li>

    <li>222</li>

    <li>333</li>

    <li>444</li>

  </ul>

  • childNodes 属性    ====>    oUl.childNodes

    可以用childNodes属性来找到ul下所有的子节点li(是节点列表集合,即能找到所有li),并且只能访问元素的直系子节点(如果li里面还有别的元素是无法访问到的)

    注意:childNodes在标准浏览器下:

        会包含元素节点+文本节点(空格、回车等),并且允许非法嵌套(如ul里有<p>也会选中); ==》宽容

       在非标准的IE浏览器下:

        只包含元素节点,并且不允许非法嵌套;      =====》不够宽容

    对于此类的兼容问题我是这样记得,标准浏览器比较宽容,所以它大方的把文本节点也给你算上了(虽然不一定是好事),并且就连不是自己的孩子,也当作自己的。哈哈

    非标准的IE就不够宽容啦,不是我的我不要~

  • firstChild 与 firstElementChild 属性   -------》寻找元素的第一个子节点  oUl.firstChild/firstElementChild

   两者的区别:firstChild在标准浏览器下:元素节点+文本节点   =====》宽容

              在非标准IE下: 元素节点     ====》不宽容

         firstElementChild属性只在IE浏览器才拥有

   解决兼容问题方法:

      var oFirst = oUl.firstElementChild  ||  oUl.firstChild ;

      oFirst.style.background = 'red';  //这样无论是IE还是标准下都可以oul下的第一个子元素添加一个红色背景了

   那么问题又来了,如果Ul下没有元素呢????  我还不知道,望告知,或者我一会再去查。

  • lastChild 与 lastElementChild 属性  -------》寻找元素的最后一个子节点  oUl.lastChild/lastElementChild

   跟第一个的一样,lastChild在标准下宽容(文本+元素);非标准IE下不宽容(元素)

   解决兼容:     

      var oLast = oUl.lastElementChild  ||  oUl.lastChild ;

      oLast.style.background = 'red'; 

  -----------推荐使用寻找子节点的方法-------------------------------------

  • children 属性   -------》寻找元素的所有子节点列表集合  oUl.children.length ==>得到li的个数

   children 在标准浏览器下:元素节点+允许非法嵌套

        在非标准IE下:元素节点 +不允许非法嵌套

   

  -----------寻找兄弟节点的方法-------------------------------------

  • nextSibling与nextElementSibling 属性  -------》寻找当前元素的下一个兄弟节点  oUl.oFirst.nextSibling/nextElementSibling 
  • previousSibling与previousElementSibling 属性  -------》寻找当前元素的上一个兄弟节点  oUl.oLast.previousSibling/previousElementSibling 

DOM基础之“寻找”子节点的更多相关文章

  1. DOM的概念及子节点类型

    前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...

  2. DOM的概念及子节点类型【转】

    前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...

  3. 遍历DOM树,获取子节点

    获取子节点的方法有:  方法  说明  children()  选取子节点,可以带过滤参数.但只能选择子节点,不能选择孙子节点.  find()  选取子节点,可以带过滤参数.可以选择子节点及孙子节点 ...

  4. JS获取子节点、父节点和兄弟节点的方法实例总结

    转自:https://www.jb51.net/article/143286.htm 本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 ...

  5. JS-DOM ~ 03. 子节点的操作、style.样式和属性、dom元素的创建方法及操作、14个例题、主要是利用js直接控制html属性

    带有Element和不带的区别 a)  带Element的获取的是元素节点 b)  不带可能获取文本节点和属性节点 获取所以子节点 a)   . childNodes b)   . children ...

  6. 5月25日-js操作DOM遍历子节点

    一.遍历节点 遍历子节点 children();//获取节点的所有直接子类 遍历同辈节点 next(); prev(); siblings();//所有同辈元素 *find(); 从后代元素中查找匹配 ...

  7. jQuery操作DOM基础 - 创建节点

    案例:创建两个<li>元素节点,并且作为<ul>元素节点的子节点,添加到DOM树中 <!DOCTYPE html> <html lang="en&q ...

  8. JavaScript DOM查询,原生js实现元素子节点的获取

    在网页网页开发中,经常会需要获取某个网页元素的子元素,然后对其进行事件绑定.或样式修改等行为.这些操作对于jquery来说很容易,但是对于原生js会稍微麻烦一些,这里将介绍四种方法获取元素的子元素(本 ...

  9. JavaScript的DOM编程--04--获取元素节点的子节点

    获取元素节点的子节点(**只有元素节点才有子节点!!) 1). childNodes 属性获取全部的子节点, 但该方法不实用. 因为如果要获取指定的节点 的指定子节点的集合, 可以直接调用元素节点的 ...

随机推荐

  1. 构建高可用web站点(五)

    数据库是web站点中重要的应用,放在第四篇是因为之前来不及总结的原因,在之前的文章我看到了无论是Mysql或者是nosql的一些缓存和分布式一些比较扩展性的功能.但是对于单个数据库来说,它的优化也是我 ...

  2. U盘安装,FTP安装CENTOS--错误信息:Unable to read package metadata.This may be due to a missing repodata directory.

    考察repodata下的repomd.xml里的文件和同一目录下的那些文件是不是一一对应的.主要看有没后缀.如果不一致,则要用XML里的文件后缀加上去. 弄了我好多次. http://renzhenx ...

  3. POJ2248 A Knight's Journey(DFS)

    题目链接. 题目大意: 给定一个矩阵,马的初始位置在(0,0),要求给出一个方案,使马走遍所有的点. 列为数字,行为字母,搜索按字典序. 分析: 用 vis[x][y] 标记是否已经访问.因为要搜索所 ...

  4. 【转】android去掉EditView的默认焦点问题

    原文网址:http://www.111cn.net/sj/android/54680.htm 做一个输入框时发现android中EditView的默认焦点了,这种问题如果是在输入框还好,但在搜索页面或 ...

  5. Hadoop FileInputFormat实现原理及源码分析

    FileInputFormat(org.apache.hadoop.mapreduce.lib.input.FileInputFormat)是专门针对文件类型的数据源而设计的,也是一个抽象类,它提供两 ...

  6. 蓝牙4.0 BLE 开发

    在BLE开发中的一些随记,供大家参考: 凡事皆有状态 低功耗蓝牙背后有个基本的概念:任何事务都有状态.状态可以是任何东西:当前的温度,设备里电池的状态,设备名称或者对测量温度的地点的描述.它通过属性服 ...

  7. HDOJ 2206 IP的计算(正则表达式的应用)

    Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方 ...

  8. PCRE

    http://blog.sina.com.cn/s/blog_6a1837e901010ckv.html http://hubeihuyanwei.blog.163.com/blog/static/2 ...

  9. Back to Basics: Using KVO

    One of the things I like most about Apple’s iOS SDK is the consistent and easy-to-use API they provi ...

  10. 【Cocos2d-X开发学习笔记】第10期:渲染框架之几何图形的绘制

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.图形的绘制 有时为了调试游戏,我们常常会需要 ...