《Javascript DOM编程艺术》读书笔记

最近在学习javascript,于是知乎大神告诉我基础可以先看一下《javascript DOM编程艺术》,说实话,我的水平是知道getElementById,getElementsByTagName之类的,但是并不知道DOM为何方神圣。所以,去看了一下 ,主要讲的就是 getElementById,getElementsByTagName,是真真真基础,如果什么都不会,我建议可以去看一下啊,那么下面就是我的笔记啦 ~~~


第一章:javascript简史:讲了javascript的起源,各个浏览器打得不可开交的时候,w3c这个和事佬站出来说“你们不要打了,我来制定一个标准”于是乎.....

第二章:Javascript语法:(建议没有编程基础的要好好看一下)有编程基础的扫扫,无非就是变量,数组if else ,for、注释、函数和对象咯。值得一说的是:1.javascript是弱类型语言,任何的数据类型声明只需要一个var,var a=“b”,就申明了a是一个字符b。

2.变量分全局变量和局部变量,没有用var声明的都是全局遍历,在函数里用var声明的是局部变量,出了这个函数就 undefined了。

3.数组声明可以:var Array1={1,2,3}或 var Array2=Array(4);Array2[0]=0这样...;或采用赋值的方法。甚至可以在数组里放数组。。(老厉害啦)

4.还有操作符之类的 巴拉巴拉 ,懂得可以跳过,不懂就要仔细多看几遍的,java,php,c什么的都是这样。(but 字符串+数字转换成字符串,比如“12”+3,结果是123啊 )

5.对象,这里有几点别的地方比较少见的。

5.1内建对象,就是那些被我们new出来的,比如数组,就是new的一个Array啊

5.2宿主对象:这些对象不是由javascript语言本身提供而是由浏览器提供的。比如Form,Image,Element啊document等。

5.3用户定义对象:由程序员自己建的。(这个很常见)


第三章:DOM:

1.DOM其实就是document object model(文档对象模型)model这里值得是树的意思,像家谱树一样的DOM树。(数据结构里对树有非常详细的解释)

2.节点(计算机网络里的概念)他表示网络中的一个连接点,zaijavascript中,有元素节点,文本节点,和属性节点

3.css,cascading style sheets,在css里设置长宽高等,值得一说的是css的优先级,内联(1000)>id(100)>class(10)>标签 (1)

4.DOM的五个方法

4.1document.getElementById,根据id获取,唯一一个

4.2documen.getElementsByTagName:看到Elements就知道这是个复数了吧。获取查询的所有标签 是一个数组。

4.3getElementsByClassName:根据class名字来获取的,也是一个数组

4.4setAttribute:设置属性

4.5getAttribute:获取属性

第四章:JavaScript图片库:

叫我们做了一个图片库的网页,并且接触了一个新词--“平稳退化”:确保网页在没有javascript的情况下也能正常工作。


1.childNodes:可以用来获取任何一个元素的所有子元素,它是一个包含这个元素全部子元素的数组。

2.nodeType:该属性总共有12种可取值,其中3种最具有实用价值。元素节点----1,属性节点----2 文本节点---3,这就意味着,可以让函数支队特定类型的节点进行处理。

3.nodeValue:改变文本节点的值。这个获取的是“文本节点”(敲重点)的值

4.firstChild和lastChild:firstChild=node.childNodes[0], lastChild=node.childNodes[node,childNodes.length-1];


第五章:最佳实践

本章讲了一些要求,

1.平稳退化:确保网页在禁止javascript运行里还能正常工作

2.分离Javascript:把网页的结构和内容与javascript脚本的动作行为分开

3.向后兼容性:确保老版本的浏览器(或者面向用户群主体)不会因为脚本而死掉     

4.性能考虑:确定脚本执行的性能最优(尽量少访问DOM和尽量减少标记)


第六章:第四章的图片库改进版("a "多了一个空格找了好久的bug啊还是太嫩)

1.把事件处理函数移出文档

2.向后兼容

3.确保可访问



第七章:动态创建标记

1.传统方法:document.write()和innerHTML

1.1document.write("<p>hello</p>");输出内容为html语言 ,缺点:违背“欣慰与表现分离”,不建议使用

1.2innerHTML,用来读写某个给定元素的html内容(不带转化的

2.DOM方法

2.1createElement,创造元素节点

2.2appendChild,添加孩子节点,在创建了元素之后一定要记得添加回去,不能让你创建的元素成了孤儿。

2.3 createTextNode ,创建文本节点

2.4 insertBefore,在某个节点前面插入一个节点

2.5 AJAX 局部更新

2.5.1 XMLHttpRequest对象





服务器在向XMLHttpRequest对象发回响应时,readyState属性有5个可能的值,

分别是0-- 未初始化 1--正在加载 2--加载完毕 3--正在交互 4--完成

注意:ajax依赖服务器端处理


第八章 充实文档的内容

需要注意 一颗“地雷”:dispalyAbbreviations函数


第九章 CSS-DOM

网页 :结构层(html) 表示层(css) 行为层(javascript)

1.element.style.property(style是一个对象),如果property中包含连字符-,则使用驼峰命名法,因为js默认-为减号。

2.className属性  element.className = value(与element.setAttribute("class","value")效果一样)


第十章 用js实现动画效果

1.动画基础知识

1.1位置:position属性合法值有 static(默认的),fixed,relative和absolute

1.2时间: setTimeout函数能够让某个函数在经过一段预定的时间之后才开始执行。

variable = setTimeout(“function”,interval)(赋值比较好清除)在interval时间后去调用这个函数(毫秒为单位)

clearTimeout(variable)清除函数

1.3时间递增量:使用循环,(我这边除了一个bug,好气啊)

1.4 css的overflow:用来处理一个元素的尺寸超出容器尺寸的情况,overflow-x

1.4.1 visible:不裁剪溢出内容。

1.4.2hidden:隐藏溢出的内容

1.4.3scroll:对溢出内容进行隐藏,会出现滚动条

1.4.1auto:类似与scroll,溢出时会出现滚动条


第十一章 :HTML5

1.添加的标记元素<section><article><header><footer>

2.交互及媒体元素<canvas><audio><video>

3.<canvas>可以动态的创建和操作图形图像

4.新增的表单类型:email,url,date,number,range,search,tel,color

5新增的属性:

5.1autocomplete,用于为文本输入框添加一组建议的输入项;

5.2autofocus,用于让表单元素自动获得焦点

5.3form,用于对<form>标签外部的表单元素分组;

5.4min,max,step,用于在范围(range)和数值(number)输入框中;

5.5pattern,用于定义一个正则表达式,以便验证输入的值

5.6placeholder,用于在文本输入框中像是临时性的提示信息,

5.7required,标识必填

6 .除了range不是向后兼容的,其他都是默认为text。对于range不是向后兼容的,可以用modernizr库进行兼容性检查

7.HTML5的其他特性

7.1 使用localStorage和sessionStorage在客户端存储大型和复杂数据集

7.2使用websocket与服务器端脚本进行开放的双向通性

7.3使用web worker在后台执行javascript

7.4标准化的拖放实现

7.5在浏览器中实现地理位置服务

第十二章:一个综合示例




这本书就看到这里,,接下来打算复习一下数据结构与算法 fighting~~



猜你喜欢

转载自blog.csdn.net/qq_31756443/article/details/77602169