书本的重点是教会如何通过 JavaScript 使用 DOM。在前面部分,本书介绍了 JavaScript 的简史以及语法,接着介绍了 DOM 的概念以及相关内容,后面部分就是各种不同的练习。这些练习始终贯穿了两个原则:1、渐进增强;2、平稳退化,以及经常使用 DOM 提供的五个方法。
现在需要了解 JavaScript、DOM 是什么?JavaScript 是一种脚本语言,通常只能通过 Web 浏览器去完成一些操作而不能像普通意义上的程序那样独立运行;DOM 分别为 D:document(把编写的网页文档转换为一个文档对象)、O:object(对象是一种自足的数据集合)、M:model(浏览器提供了网页的模型,我们可以通过 JavaScript 去读取这个模型) ,它是一套对文档的内容进行抽象和概念化的方法,当创建了一个网页并把它加载到 Web 浏览器时,DOM 就在幕后悄然而生。
现在列举出书本中的一些知识点。
两个重要原则
- 渐进增强(preogressive enhancement)。该原则基于这样一种思想:应该总是从最核心的部分,也就是内容开始。应该根据内容使用标记实现良好的结构;然后再逐步加强这些内容。
- 平稳退化。虽然某些功能无法使用,但是最基本的操作仍能完成。渐进增强的实现必然支持平稳退化。
另外,因为考虑兼容性问题,就是该浏览器支不支持 JavaScript,我们需要进行对象检测。
DOM 提供的五个方法
- getElementByID
- getElementsByTagName
- getElementsByClassName
- getAttribute
- setAttribute
好习惯
在每条语句的末尾都加上一个分号,并且独占一行。
在 if 语句中使用花括号{}。
变量命名用下划线分隔各个单词,命名函数时是驼峰格式。
在定义一个函数时,一定要把它内部的变量全都明确地声明为局部变量。
好主意
只要使用了 createElement 方法,就应该把新创建出来的元素赋给一个变量就是好主意。
“在绝大多数时候,把这个函数调用赋值给一个变量将是一个好主意。eg: variable = setTimeout(“”function””,interval)”
一些案例
- 显示用户想看的图片;
- 为文档创建“缩略语列表”的函数、为文档创建“文献来源链接的函数…
- 利用 DOM 改变 css;
- 实现动画效果(滑动图片)
本书关于这些案例都是先最简单的方法来实现,然后再遵循两个重要原则慢慢改进。以及本书的案例,我全部都放进我的 github 仓库里了,还有里面呈现的页面其实不是很符合课本,因为我找不到图片,有些是自己用画图软件随便画几笔,有些是网上找的。
关于学习过程中遇到的问题
- 同源策略。
这个问题,依旧是“同源策略”这件事。在第七章 Ajax 的练习时,并没有呈现出想要的结构。课本的解释是:XMLHttpRequest 对象发送的请求只能访问与其所在的 HTML 处于同一个域中的数据,不能向其他域发送请求。此外,有些浏览器还会限制 Ajax 请求使用的协议。我尝试了IE、IE edge、Chrome 这三个浏览器,只有 IE edge 在使用 file:// 协议时可以正常出结果。 - form 对象。
还有一个问题,第十二章中关于“form 对象”的介绍,下面是一个包含所有表单元素的数组:
form.elements
elements 数组则返回 input、select、textarea 以及其他表单字段。
但是我在实践的过程中,它把 fieldset 这个元素也计算在内。不得已需要改一下关于 global.js 的代码,不然出错了。
最后添加两点,我还不是特别熟悉。
- Ajax 用于概括异步加载页面内容的技术。它的核心是 XMLHttpRequest 对象。
- 库 就是可重用的代码包。例如:JQuery。
黄侦探要继续冲啦!😀