【干货】JavaScript DOM编程艺术学习笔记1-3
从7月29号到8月8号,断断续续地看完了这本书,做了部分实践联系。总体感觉本书真的只能算是个入门,学完之后看到库的那一章才感觉是个大坑,实践中大部分应该都是用的现成的库吧,所以还要重新学习一个库,但是这本书也算是给这门语言包括DOM的学习打下了个基础,明白了这些底层的东西,才能将库这些用的更好吧。总体来说,难度入门级,阅读体验良好。注:看完书一定要自己敲敲代码,会出现很多你意想不到的错误,自己学着调试找出错误并改正,这也是一项必备能力吧。
一、JavaScript简史
JavaScript语言使网页具备交互能力。是一种脚本语言,需要浏览器进行解释和执行,不能像普通意义上的程序那样独立运行。
DOM是一套对文档内容进行抽象和概念化的方法。是一种应用程序接口API(一组得到有关各方共同认可的基本约定)。定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档的内容、结构和样式。其中,JavaScript只是一种运用DOM的其中一种语言。
二、JavaScript语法
1、编写JavaScript脚本只需要一个文本编辑器和一个WEB浏览器即可。
在html文档中插入javascript脚本:
(1)直接在html的head中插入代码<script>……</script>
(2)将代码保存为一个独立的.js文件,在head中引用<script src=""></script>
(3)最好是将js文件放在</body>标签之前引用。这样能使浏览器更快地加载页面。
2、程序设计语言分为编译型和解释型。
编译型:如java c等需要一个编译器compiler,编译器是一种程序,能够把java等语言编写出来的源代码翻译为直接在计算机上执行的文件。编译型语言写的代码有错误,在编译阶段就能被发现。编译型语言往往速度更快,可移植性更好。
解释型:解释型语言不需要编译器,只需要解释器。对于javascript浏览器就能完成解释和执行工作。
3、javascript语法
语句statement:每个语句末尾用分号结束。
注释comment:单行前用"//",多行用/*……*/
变量variable:最好提前声明,变量名不能包含空格和标点符号,一般用加下划线或驼峰格式camel case命名。
数据类型:javascript是一种弱类型weakly typed语言,不用在声明变量的时候声明类型,且可以在任何阶段改变变量的数据类型。
字符串:必须包含在引号里,单引号和双引号都可以。里单外双,里双外单。
数组array:var beatles=Array(); 填充数组:var beatles=Array("John","Paul"); 或var beatles=["John","Paul"];数组元素可以不同类型混合,可以是变量,也可以是数组。使用下标来获取元素beatles[0]="John"
对象object:var lennon=Object();用.点号来获取元素。填充对象:var lennon=Object(); lennon.name="John";
lennon.year=1940;或var lennon={name:"John",year:1940};
4、操作operation
算术操作符:= + -* /,其中+还可以用做拼接符concatenation,将两个字符串拼接在一起,也可以将字符串和数字拼接起来,数字自动转换为字符串。
5、条件语句conditional statement
if 语句,如果是单行的语句花括号可以不要。if()内语句为真时,花括号里的语句才会执行。
if(condition){
statements;
}
其中,比较操作符==,还有一种强比较===,不仅比较值还会比较类型。
6、循环语句
while循环:
while(condition){
statements;
}只要条件为真,花括号里的代码就会反复执行下去。
do{
statements;
}while(condition);
循环语句内部代码至少会执行一次。
for循环:
for(initial condition; test condition; increment condition){
statements;
}
7、函数function
function name(argument1,argument2){
statements;
}函数命名一般用驼峰法。
变量根据作用域scope分为全局变量global variable和局部变量local variable,在函数内部一般用局部变量,除了这个函数其他函数其他地方不能用。声明时var total=就是个局部变量,不加var 只有total=就是个全局变量。
8、对象object
对象是由一些属性property和方法method组合在一起的数据实体。javascript有很多内建对象和宿主对象。
三、DOM
DOM:document文档 object对象(分为用户定义对象、内建对象、宿主对象) model模型(DOM把一份文档表示为一颗家谱树)
1、节点node
文档是由节点构成的集合,有很多不同类型的节点。
元素节点element node、文本节点text node(总是被包含在元素节点内部)、属性节点attibute node(不一定每个元素节点都有)
2、获取元素
通过元素id名获取元素。document.getElementById("purchase")
通过标签名tagname获取一组元素。document.getElementsByTagName("a")
通过类名classname获取一组元素,不过只有较新的浏览器才支持。document.getElementsByClassName("important sale")多个类名用空格隔开即可
3、获取和设置属性
object.getAttribute("title");获取object对象的title属性
object.setAttribute("title","a list of goods");为object对象设置title属性为a list of goods
注:发现通过setAttribute设定的属性,做出的修改不会出现在文档本身的源代码中。是因为DOM的工作模式是先加载文档的静态内容,再动态刷新,而动态刷新不会影响文档的静态内容。
【干货】JavaScript DOM编程艺术学习笔记1-3的更多相关文章
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- JavaScript DOM编程艺术-学习笔记
发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...
- 【干货】JavaScript DOM编程艺术学习笔记10-12【完】
十.用JavaScript实现动画效果 鼠标放到链接上,每次只显示图片的一小部分,加快加载速度. js: function prepareSlideshow(){ //对象检测 if(!documen ...
- 【干货】JavaScript DOM编程艺术学习笔记4-6
四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...
- 【干货】JavaScript DOM编程艺术学习笔记7-9
七.动态创建标记 在文档中不写占位图片和文字代码,在能调用js的情况下动态创建,文档支持性更好. 在原来的addLoadEvent prepareGallery showPic的基础上增加函数prep ...
- JavaScript DOM编程艺术学习笔记-第二章JavaScript语法
一.JavaScript示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- JavaScript DOM编程艺术学习笔记-第一章JavaScript简史
一,JavaScript的起源 JavaScript是Netscape与Sun公司合作开发,它是一种脚本语言,通常只能通过Web浏览器去完成一些操作.JavaScript为程序员提供了一些操控Web浏 ...
- JavaScript DOM编程艺术-学习笔记(第八章、第九章)
第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...
- JavaScript DOM编程艺术-学习笔记(第七章)
第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文 ...
随机推荐
- Remove all the html Tag in String
在用Umbraco开发项目的过程中,由于在Umbraco Back office 中有用到 rich text editor, 而它返回的值是HtmlString类型,也就是说是包含Html Tag的 ...
- HN669打包工具--调试文档
调试有两种方式,一是直接在游戏工程上面调试,这比较麻烦,需要根据插件配置文件和脚本文件去配置好工程选项后,才能调试.简单一点就是通过脚本文件打包后会有生成游戏工程对应每个渠道的工程. 如下图:这个工程 ...
- Dijkstra 路径规划 C#
示例无向图如下:(起始点为v0) 邻接矩阵为: 注意:其中没有连接的边和自己到自己的点权值用10000表示. 代码: static void Main(string[] args) { , , , , ...
- .NET Core 3.0 可回收程序集加载上下文
一.前世今生 .NET诞生以来,程序集的动态加载和卸载都是一个Hack的技术,之前的NetFx都是使用AppDomain的方式去加载程序集,然而AppDomain并没有提供直接卸载一个程序集的API, ...
- Hadoop 对MapReduce的理解
对MapReduce的理解 客户端启动一个作业 向JobTraker请求一个JobId 将资源文件复制到HDFS上,包括Jar文件,配置文件,输入划分信息等 接收作业后,进入作业队列,根据输入划分信息 ...
- Codeforces Round #558 (Div. 2)C(计算几何,排列组合,模拟)
#include<bits/stdc++.h>using namespace std;typedef struct{ double k,b;}node;node k[1000007];bo ...
- Yaf + Smarty 整合笔记
Yaf真的是太简单了,简单到使用mvc的时候在view里面需要手写php脚本.因此考虑整合一下smarty模板引擎.随心所欲也正是yaf的魅力 Yaf 安装 这里简单说一下yaf的安装,已经是非常无脑 ...
- SLF4J、Log4J使用记录
程序中一直在用log4j,之前都没了解过,只知道是打印日志信息的.最近独立新建了几个开发工程,发现slf4j老有冲突,开始关注起来,我用log4j打印日志,与slf4j有毛关系,怎么老冲突呢.网上找了 ...
- 毕马威&阿里:通向智能制造的转型之路
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 2019 年 4 月 17 日,毕马威与阿里研究院携手举办了智能经济主题报告发布会,从技术.制造.组织 ...
- Docker-Zerotier
1. 拉取镜像 docker pull zerotier/zerotier-containerized 2. 生成并运行容器 docker run \ --name=zerotier-one \ -- ...