04-JavaScript
unit04-JavaScript
JavaScript简介
什么是JavaScript(了解)
全称叫做JavaScript,简称叫做JS
由NetScape(网景)公司提供,是一门专门嵌入在浏览器中执行的脚本语言
JS运行在浏览器中,负责实现网页中的动画效果
或者是实现表单校验等功能
JS特点和优势(了解)
1、特点:
(1)JS是一门直译式的语言(边解释边执行,没有编译的过程)
(2)JS是一门基于对象的语言(JS中没有类的概念,也没有编译的过程)
JS中是有对象的(内置对象、自定义对象)
(3)JS是一门弱类型的语言(Java:强类型)
1 | 在java中: |
2、优势:
(1)JS具有良好的交互性
(2)JS具有一定的安全性(只能在浏览器内部运行,不能访问浏览器以外的资源)
(3)JS具有跨平台性(JS 浏览器)
( JS语言是跨平台的,是因为有浏览器,但浏览器不跨平台
Java语言是跨平台的,是因为有虚拟机,但虚拟主机不跨平台 )
在HTML书写JS的方式
1、在script标签内部可以书写JS代码:
在head或者body标签内部可以添加一个script标签,在script标签内部可以直接书写JS代码!
1 | <!-- 在script标签内部可以书写JS注释和JS代码 --> |
2、通过script标签引入外部的JS文件
在head或body标签内部,可以通过script标签引入外部的JS文件。例如:
1 | <!-- 通过script标签可以引入外部的JS文件 --> |
注意:(1)在引入js文件的script标签内部不要书写JS代码,例如:
1 | <script src="demo.js"> |
(2)不要将引入JS文件的script标签自闭,因为可能会导致文件引入失败,如下:
1 | <script src="demo.js" /> |
扩展内容:也可以直接在元素上书写JS代码
1 | <!-- 直接在元素上书写JS代码: |
JavaScript语法
注释格式
JS的注释符号和Java的注释符号相同,如下:
1 | // 单行注释内容 |
数据类型
1、基本数据类型
(1)数值类型(number)
在JS中,所有的数值在底层都是浮点型,但是在处理和显示的过程中会自动的和整型进行转换。
1 | 例如:2.4+3.6=6 |
(2)字符串类型(string)
在JS中,字符串类型属于基本数据类型,字符串常量可以使用单引号或者使用双引号引起来。例如:
1 | var s1 = "Hello JS"; |
另外,JS中字符串类型有对应的包装对象(String),在需要时会自动的和包装对象进行转换。
1 | var s1 = "Hello JS"; |
(3)布尔类型(boolean)
布尔类型的值有两个,分别为true和false。
(4)undefined
undefined类型的值只有一个,就是undefined,表示变量未定义(但不是指对象没有声明)。
是指声明了变量,但没有为变量赋值,该变量的值就是undefined。
1 | /* 1.undefined类型 */ |
(5)null
null类型的值也只有一个,就是null,表示空值。
可以作为函数的返回值,表示函数返回的是一个空的对象。
注意:null和undefined类型的变量是不能调用函数或属性的,会抛异常!
2、复杂数据类型
主要指对象(JS的内置对象、自定义的对象、函数、数组)
变量声明
JS中是通过var关键字声明变量,声明的变量是不区分类型,可以指向任意的数据。例如:
1 | var x = 100; |
另外,JS中多次声明同名的变量不会出现语法错误,例如:
1 | /* 2.变量的定义 */ |
JS运算符
JS和Java中的运算符大致相同,例如:
1 | 算术运算符: +,-,*,/,%,++,-- |
JS语句
JS中的语句和Java中的语句也大致相同
1、if分支结构
if分支结构用于基于不同的条件来执行不同的动作。语法结构如下:
1 | if (条件 1){ |
2、switch语句
使用 switch 语句来选择要执行的多个代码块之一。语法结构如下:
1 | switch(n){ |
执行原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break来阻止代码自动地向下一个 case 运行。
3、for循环语句 – 循环代码块一定的次数
for 循环的语法结构如下:
1 | for (语句 1; 语句 2; 语句 3){ |
4、while循环 – 在指定条件为真时循环执行代码块
JS中while循环也分为while和do/while循环,下面为while循环语法结构:
1 | while (条件){ |
while 循环会在指定条件为真时循环执行代码块。
案例1:if分支案例: 接收用户输入的成绩,判断成绩所属的等级
1 | 80~100(包括80,也包括100) 优秀 |
其他值 输入有误
代码实现如下:
1 | var score = prompt("请输入您的成绩: "); |
案例2:switch语句案例—实现一个简易的计算器:
可以接收用户输入的两个数值和一个操作符(+、-、*、/),根据操作符号的不同,对两个数值执行不同的运算。
代码实现如下:
1 | //1.接收用户输入的数值和运算符, 中间用空格分隔 |
案例3:for循环语句案例
遍历1100之间的所有整数,求1100之间所有整数的和,并输出到控制台;
代码实现如下:
1 | //-------------------------------------- |
案例4:while循环语句案例
遍历下面数组中的元素,将元素输出到控制台。
1 | var arr = [123, "abc", false, new Object() ]; |
代码实现如下:
1 | var arr = [123, "abc", false, new Object() ]; |
JS数组
Array 对象用于在单个的变量中存储多个值。
JS数组的声明方式一:
1 | //声明一个空数组,长度为零 |
JS数组的声明方式二:
1 | //声明一个空数组,长度为零 |
数组中的细节问题:
(1)JS中的数组可以存储任意类型的数据
(2)JS中的数组长度是可以被任意改变的
1 | var arr1 = []; |
JS函数
函数就是一个具有功能的代码块, 可以反复调用
函数就是包裹在花括号中的代码块,前面使用了关键词 function。
JS中声明函数的方式为:
1 | function 函数名称([参数列表]){ |
或者:
1 | var 变量名/函数名 = function([参数列表]){ |
调用函数: 函数名称([参数列表]);
综合练习
(自己完成)声明一个函数fn,在函数中实现:遍历指定的两个数值(例如1和100)之间的整数,将是3的倍数的数值存入到一个数组中,并将数组返回。
1、声明fn函数
1 | function fn(x,y){ |
2、调用fn函数, 获取1~100之间是3的倍数的数值组成的数组
var arr = fn(1,100);
3、遍历数组中的元素, 输出在网页上(提示: document.write(“输出的内容”) )
1 | for(var i=0;i<arr.length;i++){ |
DOM操作
DOM: Document Object Model,文档对象模型,其实就是JS专门为访问html元素提供的一套API。
案例:电灯开关
点击电灯可以实现开/关灯,代码实现如下:
1 | var flag = "off"; //flag表示灯的状态, off表示灯是关闭的! |
案例:增删改元素
点击网页中的按钮对html元素进行操作
练习1、添加元素:添加一个div元素到body中
1 | function addNode(){ |
练习2、删除元素: 删除id为div_2的元素
1 | function deleteNode(){ |
练习3、更新元素内容:将div_3的内容更新为当前时间
1 | function updateNode(){ |
案例:网页换肤
1 | /** 练习1:执行下面的函数,切换字体大小 */ |
总结:JS获取元素
document.getElementById( id值 )
– 通过元素的id值,获取一个元素。返回的是表示该元素的js对象。
document.getElementsByTagName( 元素名 )
– 通过元素名称获取当前文档中的所有指定名称的元素,返回的是一个数组,其中包含了所有指定名称的元素。
document.body
– 获取当前文档中的body元素
ele.parentNode
– 获取当前元素的父元素。ele表示当前元素
总结:JS增删改元素
document.createElement( 元素名称 )
– 根据元素名称创建指定名称的元素,返回的是表示新创建元素的js对象
parent.appendChild( child )
– 通过父元素添加子元素,其中parent表示父元素,child表示子元素
parent.removeChild( child )
-- 通过父元素删除子元素,其中parent表示父元素,child表示子元素
ele.innerHTML
– 获取当前元素的html内容(从开始标签到结束标签之间的所有内容),还可以设置当前元素的html内容(如果元素内部有内容,将会覆盖原有内容)