知识点总结
  • childNodes、children子节点列表集合、nodeType节点类型、nodeName、nodeValue、attributes属性列表集合
        childNodes和children都只包含子节点,不包含孙节点。
区别:
childNodes--
标准下:包含元素和文本节点,也会包含非法嵌套的子节点
非标准下:只包含元素节点,IE7以下不会包含非法嵌套的子节点(IE6)
children--
标准模式下和非标准模式下:只包含元素节点(推荐使用此方法) nodeType 为节点类型,总共有12种节点,常用是:
元素节点 1
属性节点 2
文本节点 3
注释节点 8
文档节点 9 attributes[i].name 属性名称 attributes[i].value 属性值
  • firstChild、lastChild、nextSibling、previousSibling
        --------------------------------------------------------
firstElementChild firstChild
--------------------------------------------------------
firstElementChild : 只获取元素节点、ie6/7/8不支持
firstChild : 标准下包括空白文本节点、非标准下元素节点
var oFirst = 元素.firstElementChild || 元素.firstChild
children[0] 第一个元素节点 同理:
lastElementChild lastChild
nextElementSibling nextSibling
previousElementSibling previousSibling
  • parentNode offsetParent、offsetLeft offsetTop
      parentNode  获取父级

       offsetParent 表示有定位的父结点

          没定位到body,有定位到定位的父结点
        IE6:
         自身元素定位:html
         父级触发了layout:触发的那个父级(判断是否触发:元素.currentStyle.hasLayout) offsetLeft\offsetTop
   没有定位父级,是html
  有定位父级,则是到定位的那个父级
       IE6:
          自身没定位,到body
          自身定位,到定位的父级 getPos函数的封装,用来实现不管有没有定位,都是到body
  • style.width clientWidth offsetWidth、style.height clientHeight offsetHeight
        style.width 行间样式宽
clientWidth 可视区宽(width+padding)
offsetWidth 占位宽(width+padding+border,即可视区宽+border) height同样如此
  • getAttribute()、setAttribute()、removeAttribute()
    []和.无法获取用户自定义属性,而getAttribute可以获取自定义属性
getAttribute可以获取元素属性的实际值(src、href、url),IE7下还是会返回绝对路径 getAttribute(属性名称)
setAttribute(属性名称,属性值)
removeAttribute(属性名称)
  • createElement()、appendChild()、insertBefore()、removeChild()、replaceChild()
        document.createElement(标签)
父级.appendChild(要添加的元素) 追加在最后
父级.insertBefore(要添加的元素,插入到哪个元素前面)
       在IE下,如果第二个参数不存在,(IE8,ie7,ie6)会报错
       在标准浏览器下,第二个参数不存在,会以追回的方式来添加,即:父级.appendChild(要添加的元素)
       因此需要做兼容:
       if (第二个参数) {           父级.insertBefore(要添加的元素,插入到哪个元素前面)
       } else {
          父级.appendChild(要添加的元素       }


        父级.removeChild(要删除的元素)

        被替换节点的父级.replaceChild(新节点,被替换的节点),是剪切操作

        appendChild、insertBefore、replaceChild都可以操作动态创建出来的节点,也可以操作已有的节点,都是剪切操作

[妙味DOM]第一课:DOM基础概念、操作的更多相关文章

  1. [妙味Ajax]第一课:原理和封装

    知识点总结: ajax是异步的javascrip和xml,用异步的形式去操作xml 访问的是服务端,即https://127.0.0.1/ 或者 https://localhost 1.创建一个aja ...

  2. Elasticsearch7.X 入门学习第一课笔记----基本概念

    原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  3. Vue.js-01:第一章 - 一些基础概念

    一.前言 Vue.React.Angular,当今前端界的三驾马车,作为传统的后端程序员,前端再也不是我们想的那种切切图就可以了,第一次接触的话,先了解了解一些基础的概念. 学习系列目录地址:http ...

  4. 第一章 zookeeper基础概念

    1.ZooKeeper是什么 ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了统一命名服务. 配置管理和分布式锁等分布式的基础服务.在解决分布式数据一致性方面, ZooKeepe ...

  5. 【Kafka入门】Kafka入门第一篇:基础概念篇

    Kafka简介 Kafka是一个消息系统服务框架,它以提交日志的形式存储消息,并且消息的存储是分布式的,为了提供并行性和容错保障,消息的存储是分区冗余形式存在的. Kafka的架构 Kafka中包含以 ...

  6. go学习第一课--语法基础

    一.hello world 新建文件helloworld.go package main import "fmt" func main() { fmt.Println(      ...

  7. [妙味Ajax]第二课:实例:留言板、瀑布流

    知识点总结 瀑布流原理(固定布局) 总宽度大小固定 每列宽度固定,比如LI,高度自动计算,每列使用float:left来布局 计算最短的一列,将Div插到最短的一列处(li里面包div)(getSho ...

  8. 妙味课堂——HTML+CSS(第一课)

    一句话,还记忆不如烂笔头,何况还这么笨,记下笔记,也是记录这一路学习的过程. 妙味课堂第一课并未一味地先讲HTML,而是穿插着CSS讲解,这一点不同于一些其他视频,这一点挺特别的!所以这一课涉及到HT ...

  9. 妙味课堂——HTML+CSS基础笔记

    妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - P ...

随机推荐

  1. AndroidStudio引入so文件

    项目中需要引入几个 so文件,但APP一直崩溃报错 java.lang.UnsatisfiedLinkError: Couldn't load ad from loader dalvik.system ...

  2. 导入excel成一个list集合不支持大文件倒入(优化点在于分批分线程导入)

    package com.bj58.saletb.news.utils; import org.apache.log4j.Logger; import org.apache.poi.ss.usermod ...

  3. 详解 UIView 的 Tint Color 属性

    在iOS 7后,UIView新增加了一个tintColor属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构.它主要是应用到诸如app图标.导航栏.按钮等一 ...

  4. assert的基本用法

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库函数等.另外,从理论上来 ...

  5. 在ubuntu14.04上安装openstack mitaka

    最近在工作环境安装部署了juno版本,在GE口测试网络性能不太满意,发现mitaka版本支持ovs-dpdk,于是抽时间安装实验一番. 参考官网的安装文档,先准备将mitaka版本安装好再配置ovs. ...

  6. 敏捷开发(八)- Scrum Sprint计划会议1

    本文主要是为了检测你对SCRUM Sprint 计划会议的了解和使用程度, 通过本文你可以检测一下     1.你们的SCRUM Sprint 计划会议的过程和步骤    2.会议的输出结果    S ...

  7. Photoshop定义画笔选区为空的原因

    定义画笔预设时,选择选区后需填充黑色,否则将出现选区为空的提示

  8. win7安装iis及web配置教程

    下面iis教程只适用win7或win8系统的服务器配置,如果您使用的是xp系统或win2003系统请看:xp或2003安装iis及web配置教程 .注:新手如果嫌iis安装配置麻烦建议下载PageAd ...

  9. Swift3GCD

    GCD的使用在Swift3中的方法 //串行队列 let q:DispatchQueue = DispatchQueue(label: "xiaosi") //并发队列 qos : ...

  10. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...