1. DOM的理解

1.1 D:当创建了一个网页并把它加载到Web浏览器中时,DOM就生成了,它将我们编写的网页文档转换成一个文档对象。

1.2 O:“对象”是一种自足的数据集合,相关联的变量称为这个对象的属性,只能通过这个对象调用的函数称为这个对象的方法。

JS中的对象可以分为三种类型

A、用户定义对象:程序员自行创建的对象。

B、内建对象:Array、Math、Date

C、宿主对象:由浏览器提供的对象。

JS最初版本中,非常重要的一些宿主对象就可以使用了,最基础的对象是Window对象。Window对象对应着浏览器窗口本身,这个对象的属性和方法通常统称为BOM。

更好理解:(window object model)窗口对象模型。

document对象的主要功能就是处理网页内容。接下来我们基本上只讨论document对象的属性和方法。

1.3 M:model map 某种事物的表现形式

DOM代表着加载到浏览器窗口的当前网页。浏览器提供了网页的地图,我们可以通过JS去读取这张地图。要想从DOM获得信息,必须先把各种表示和描述文档的“图例”弄明白。

DOM把文档表示为一颗家谱树

家谱树、节点树:使用parent、child、sibling等记号来表明家族成员之间的关系

根元素是html

1.4 节点: 文档是由节点构成的集合

  1. 元素节点:DOM的原子元素节点。这些元素在文档中的布局形成了文档的结构。
  2. 文本节点:文本节点总是被包含在元素节点的内部,或者间接包含。
  3. 属性节点:用来对元素做出更具体的描述,因为属性节点总是被放在起始标签里,所以属性节点总是被包含在元素节点中,所有的属性节点都被元素包含。
  4. CSS:DOM并不是唯一和网页结构打交道,CSS告诉浏览器应该如何显示一份文档的内容。

继承是CSS技术中的一项强大功能,类似于DOM,CSS也把文档的内容视为一颗节点树,节点树上的各个元素将继承其父元素的样式属性。

有时我们需要将某些样式作用于某个特定的元素,需要把元素与其他元素区分开,需要使用class属性或id属性。

calss属性:为相同的class属性值相同的所有元素定义同一种样式。

id属性:给页面里的某个元素加上一个独一无二的标识符。

id属性就像是一个挂钩,一头连接着文档里的某个元素,另一头连着CSS样式表里的某个样式。DOM也可以使用这种挂钩。

1.5 获取元素

有三种DOM方法可以获取元素节点:

  1. getElementById

返回一个对象。

document对象特有的函数。

document.getElementById(‘xxx’);

文档中的每一个元素都是一个对象,利用DOM提供的方法能得到任何一个对象。

2.getElementsByTagName

返回一个对象数组

document.getElementsTagName(‘li’);

即使这个标签只有一个元素,也返回一个数组。

3.getElementsByClassName

返回一个对象数组

document.getElementsClassName(‘yyy’);

也可以结合使用,比如,只要id为xxx的里面的元素。

这个函数,IE8以下有兼容问题。不过,现在,没有继续兼容IE的了吧?瑟瑟发抖……

1.6 获取和设置属性(只能用于元素节点)

A、getAttribute

object.getAttribute(attribute);

getAttribute方法不属于document对象,只能通过元素节点对象调用。

如果它们没有某个属性,将会是返回空白或者null,至于是哪个,要看是什么浏览器。

B、setAttribute

对属性节点的值做出修改

object.setAttribute(attribute,value)

用在本身就有这个属性的元素上,就会将原来的值覆盖掉。

但是,setAttribute做出的修改不会反映在文档本身的源代码里。

这种表里不一的现象源自DOM的工作模式:

先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。

这正是DOM的真正威力:对页面内容进行刷新却不需要在浏览器里刷新页面。

tips:这五种方法,是将要编写的许多DOM脚本的基石。

ie插件获取dom_读书笔记《DOM编程艺术》DOM相关推荐

  1. 《JavaScript DOM 编程艺术》读书笔记

    <JavaScript DOM 编程艺术>读书笔记--其一 第二章 1.Javascript代码编写方式: (1)将JavaScript代码放在文档<head>标签中的< ...

  2. Core Java 8 读书笔记-Networking编程

    Core Java 8 读书笔记-Networking编程 作者:老九-技术大黍 原文:Core Java 8th Edition 社交:知乎 公众号:老九学堂(新人有惊喜) 特别声明:原创不易,未经 ...

  3. 【板栗糖GIS】——如何使用插件将微信读书笔记同步到notion

    [板栗糖GIS]--如何使用插件将微信读书笔记同步到notion 注:本文创意以及插件开发皆是B站的[三此君] 视频链接如下: 全网唯一支持图文导出的微信读书插件,升级啦!主打一个惊艳._哔哩哔哩_b ...

  4. 剑指offer(第二版)读书笔记以及编程题目python版答案(二)

    剑指offer(第二版)读书笔记以及编程题目python版答案(二) 题目五:青蛙跳台阶 github地址: https://github.com/ciecus/leetcode_answers/tr ...

  5. JavaScript DOM编程艺术简略笔记

    简略目录 1.BOM 2.DHTML 3.数组 4.条件判断的注意点 5.函数中变量的作用域问题 6.几种对象的简介 7.BOM和DOM 8.DOM操作中的一些特别点 9.JS文件与CSS文件的引入方 ...

  6. JavaScript DOM编程艺术学习笔记(一)

    嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...

  7. JavaScript Dom编程艺术

    当我对JavaScript还停留在只认识这几个字母的时候,有一天我突然心血来潮,在网上下了DOM Scripting的样章,照着里面的例子写了我平生第一个能让我知所以然JavaScript,在浏览器运 ...

  8. 初读JavaScript DOM编程艺术(一)

    JavaScript DOM编程艺术--前三章概念总结 一. 概述 1.什么是JavaScript 2.什么是DOM 二. JavaScript 语法 1. 语句和注释 2. 变量和数组 三. DOM ...

  9. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

最新文章

  1. Android 自定义View Canvas —— Bitmap
  2. Groovy 之 Closure
  3. 攻防世界第四题Reverse re1
  4. VD-BERT:用BERT搭建统一的视觉对话模型
  5. pycharm 敲代码时的效果插件_精选Pycharm里6大神器插件
  6. 计算机基础说课 word,计算机基础说课稿
  7. MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况
  8. azure web应用部署_使用Visual Studio Code将Python应用程序部署到Azure Functions
  9. ElementUI-自定义模板包含编辑与删除的功能
  10. [数据集]新浪微博数据集MicroblogPCU
  11. 黑马程序员Python教程——Python从入门到精通教程
  12. oracle增加dbf文件,oracle导入dbf文件工具下载|
  13. 销毁一颗二叉树--Destroy(Node* root)
  14. 【akka】Akka源码分析-Event Bus
  15. 中国国家气象局天气预报接口、爱帮网公交查询接口
  16. 我的新能源动力电池PACK热管理仿真案例
  17. python增量更新数据_django数据导出python manage.py dumpdata想指定数据增量更新的正确操作姿势是用参数--pks 5,6,7 指定键值串...
  18. CD4046应用之倍频
  19. JAVA小游戏----俄罗斯方块
  20. 基于JAVA忘忧小区物业管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. .Net程序调试与追踪的一些方法
  2. asp.net core中负载均衡场景下http重定向https的问题
  3. docker – 你应该知道的10件事
  4. vue 2.6 插槽v-slot用法记录
  5. Nginx 基础(一)
  6. 【ArcGIS Pro微课1000例】0015:ArcGIS Pro中属性字段分式标注案例教程
  7. Android之解决APP奔溃重启导致Fragment白屏问题
  8. lru算法实现 redis_使用数组与双向链表实现一个简单的LRU算法
  9. 利用tabluea分析数据的案例_利用德温特分析Dartsip的案例检索结果
  10. antd option宽度自适应_建议收藏:Axure手机自适应教程