前言

这一章节介绍 DOM, 
使用 DOM 的目的是使的网页能够变得 dynamic,使得 pages that react, that respond, that update themselves after they've been loaded.

什么是 DOM ?

结构:


以 document 开始,接下来是 这个element,接下来是 和 这两个 element,不断内嵌深入。

定义:

When you load a page into the browser, ont only does the browser parse the HTML and then render it to the display, it also creates a set of objects that represent your mark up. These objects are stored in DOM.

简而言之, DOM 是 a set of objects to represent mark-ups

DOM 是 HTML 与 JavaScipt 的共同之处

JavaScript and HTML are two different things. HTML is markup and JavaScript is code.但是它们有一个共同之处,那就是DOM. 通过它,两者可以进行相互的交流

使用 DOM

步骤

  1. LABLE: 在 HTML 中 lable 一个 element 的 id:<p id:greenplanet></p>
  2. CREATE:在 JavaScript 中创建一个 element object,需要使用到document 这个 global object 和它的 getElementById: var planet = document.getElementById("greenplanet")
  3. MODIFY:使用刚刚创建的 object 的方法:innerHTML, 来修改其内容:
  4. MODIFYL:还可以用 document object 的 getAttibute 和 setAttribute 两种方法来设置 element object 的属性,格式为:setAttribute("nameOfAttribute","valueOfAttribute")

其他知识:

  • CREATE 相关: document 这个 object 属于 built-in object, 并且它含有很多附带的 attribute 和 method,可以调用。
  • CREATE 相关:除了 getElementById() 这种方法来确定有 id 属性的 element,还可以使用 getElementbyClassName() 来确定有 class 属性的 element.
  • MODIFY 相关:innerHTML 指的是不包括两边 tags 的 HTML,此外还有 outerHTML 是包括 tags 的 HTML.
  • MODIFY相关:不仅仅可以 get element from the DOM,还可以 Create and add elements to the DOM, Remove elements from the DOM, Traverse the elements in the DOM.

解决 geyElementById 返回值为 null 的问题

问题原因

由于代码从上往下运行,在调用document.getElement() 的时候,并没有显示处所要的 id ,所以返回值为 null.

解决办法

格式:

使用 window 这个 bullt-in object 的一个叫做 onload的 property,它的作用是 get called after the page has loaded.
其中 window 这个 object 本质上 represent the broswer window.

范例:

<script>
function init() {
var planet = document.getElementById("greemplanet");
planet.innerHTML = "Red Alert: hit by phaser fire!";
} window.onload = init;
</script>

关于 onload 这个 property

格式:为 onload assign 一个函数
范例:window.onload = init;
(注意不要加括号,因为不是使用函数值,而是调用函数)
详细内容:
onload,属于 callback,或者 event handler
,它先给一个 object 一个 function ,然后当object 执行到某一个时刻之时,再进行调用这个 function.
作者是这样写的:

A callback works like this: give a function to the object that knows about the event. When the event occurs, that object will call you back, or notify you, by calling that function

onload 这个时刻代表了 as soon as the page is fully loaded.

并且这里还有其他的 event 用于 JavaScript 中的 event handler 来处理

JavaScript 第六章总结: Getting to know the DOM的更多相关文章

  1. javascript第六章--BOM

    ① window对象 ② location对象 ③ navigator对象 ④ screen对象 ⑤ history对象

  2. 第六章 组件 67 使用ref获取DOM元素和组件引用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. 读《编写可维护的JavaScript》第六章总结

    第六章 避免使用全局变量 JavaScript执行环境在很多方面都有其独特之处,全局变量就是其中之一.“全局变量”是一个神秘的对象,它表示了脚本的最外层上下文. 在浏览器中,windows对象往往重载 ...

  4. 为什么我要放弃javaScript数据结构与算法(第六章)—— 集合

    前面已经学习了数组(列表).栈.队列和链表等顺序数据结构.这一章,我们要学习集合,这是一种不允许值重复的顺序数据结构. 本章可以学习到,如何添加和移除值,如何搜索值是否存在,也可以学习如何进行并集.交 ...

  5. 《Javascript高级程序设计》阅读记录(六):第六章 下

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  6. [书籍翻译] 《JavaScript并发编程》第六章 实用的并发

    本文是我翻译<JavaScript Concurrency>书籍的第六章 实用的并发,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript ...

  7. JavaScript DOM编程艺术-学习笔记(第五章、第六章)

    第五章: 1.题外话:首先大声疾呼,"js无罪",有罪的是滥用js的那些人.js的father 布兰登-艾克,当初为了应付工作,10天就赶出了这个js,事后还说人家js是c语言和s ...

  8. JavaScript高级程序设计:第六章

    第六章 面向对象的程序设计 一.理解对象 1.属性类型: ECMAScript中有两种属性:数据属性和访问器属性. (1)数据属性: 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性 ...

  9. KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器

    无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...

随机推荐

  1. phpstorm中设置代码上传到github

    参考: https://blog.csdn.net/Knight_quan/article/details/54894691 https://www.300168.com/biancheng/show ...

  2. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165211

    目录 软件和镜像下载 虚拟机软件 Kali系统的下载 Kali系统安装 网络配置 设置共享文件夹和剪切板 安装VMware增强工具 设置共享文件夹 设置共享剪切板 更新软件源 软件和镜像下载 虚拟机软 ...

  3. bzoj 2216 Lightning Conductor - 二分法 - 动态规划

    题目传送门 需要root权限的传送门 题目大意 给定一个长度为$n$的数组,要求对每个$1 \leqslant i \leqslant n$找到最小整数的$p$,对于任意$j$满足使得$a_{i} + ...

  4. Codeforces 798D Mike and distribution - 贪心

    Mike has always been thinking about the harshness of social inequality. He's so obsessed with it tha ...

  5. 解决c1xx fatal error C1083 Cannot open source file

    在项目开发过程中,遇到一个问题,一个工程B导入另外一个工程A的生产代码,出现这个错误,最后查阅资料发现是文件路径太深,导致文件路径字符超过了217字符. 写了一个测试Demo来验证: 一.新建Win3 ...

  6. 第一次怎么把本地git仓库的内容push到远程仓库?

    使用git push origin <分支名> -f 这种方式可以用本地仓库的内容覆盖远程仓库.

  7. c# 之 事务

    SqlTransaction事务的简单例子 { DataTable dt = new DataTable(); System.Data.SqlClient.SqlConnection cnn = ne ...

  8. (转载)http和socket之长连接和短连接区别

    TCP/IPTCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP协议与UDP协议.在应用层有: ...

  9. ISE14.7兼容性问题集锦https://www.cnblogs.com/ninghechuan/p/7241371.html

    ISE14.7兼容性问题集锦 对于电子工程师来说,很多电路设计仿真软件都是特别大的,安装下来一般都是上G,甚至几十G,而且win7的兼容性也是最好的,不愿意升级win10是因为麻烦,而且没有必要,对于 ...

  10. web前端知识总结

    前言: 一直想着整理一下关于前端的知识体系和资料,工作忙了些,挤挤总会有的,资料很多,就看你能不能耐下心坚持去学了,要多学多敲多想,祝你进步~ 学习之前首先要大概了解什么是HTML ,CSS , JS ...