当前位置: 首页 > news >正文

【干货】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的工作模式是先加载文档的静态内容,再动态刷新,而动态刷新不会影响文档的静态内容。

 

转载于:https://www.cnblogs.com/ziye89/p/7324592.html

相关文章:

  • WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)
  • [jQuery]10 Things I Learned from the jQuery Source
  • 并查集(进阶)
  • WebAPI路由、参数绑定
  • [Thinking]三个行
  • 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…【字符串+模拟】
  • MAC Gradle 下载的问题
  • ios下微信浏览器如何唤醒app?app已上架应用宝
  • C/C++中__builtin_popcount()的使用及原理
  • 交叉验证
  • python获取参数
  • APP开发的常见问题有哪些呢?
  • Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS 对比
  • Linux 防火墙firewalld
  • C语言之函数调用06—彩球排列
  • 【mysql】环境安装、服务启动、密码设置
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • css系列之关于字体的事
  • ES10 特性的完整指南
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • GraphQL学习过程应该是这样的
  • JS函数式编程 数组部分风格 ES6版
  • js继承的实现方法
  • JWT究竟是什么呢?
  • KMP算法及优化
  • 闭包--闭包之tab栏切换(四)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 分布式熔断降级平台aegis
  • 普通函数和构造函数的区别
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 时间复杂度与空间复杂度分析
  • 白色的风信子
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (编译到47%失败)to be deleted
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)学习JVM —— 垃圾回收机制
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)Google的Objective-C编码规范
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core跨平台微服务学习资源
  • .Net 路由处理厉害了
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET中两种OCR方式对比
  • ??javascript里的变量问题
  • @vue/cli 3.x+引入jQuery
  • [Apio2012]dispatching 左偏树
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C++] sqlite3_get_table 的使用