1.为什么学习 JavaScript?
JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为
2. 什么是JavaScript?
JavaScript 是一个面向对象的脚本语言,目前互联网上较流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
面向对象是一种编程思想
面向对象是从面向过程升华而来。
面向过程–例如:从电视塔到钟楼
将从电视塔开始到钟楼结束中途所经历的每一步都要记录 【公交车】
面向对象–例如:从电视塔到钟楼
将电视塔作为起始对象,钟楼作为结束对象 【滴滴】
脚本语言–编写好以后放到运行环境中直接就能运行的语言。
3.JavaScript的作用
<1>JavaScript:直接写入 HTML 输出流
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<p>
JavaScript 能够直接写入 HTML 输出流中:
</p>
<script>
document.write("<h1>这是一个标题</h1>");
document.write("<p>这是一个段落。</p>");
</script>
</body>
</html>
<2>JavaScript:对事件的反应
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 JavaScript</h1>
<p>JavaScript 能够对事件作出反应。比如对按钮的点击:</p>
<button type="button" onclick="alert('欢迎!')">点我!</button>
</body>
</html>
<3>JavaScript:改变 HTML 内容
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一段 JavaScript</h1>
<p id="demo">JavaScript 能改变 HTML 元素的内容。</p>
<script>
function myFunction(){
x=document.getElementById("demo"); // 找到元素
x.innerHTML="Hello JavaScript!"; // 改变内容
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>
</body>
</html>
<4>JavaScript:改变 HTML 图像
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<script>
function changeImage(){
element=document.getElementById('myimage')
if (element.src.match("bulbon")){
element.src="/images/pic_bulboff.gif";
}
else{
element.src="/images/pic_bulbon.gif";
}
}
</script>
<img id="myimage" onclick="changeImage()" src="/images/pic_bulboff.gif" width="100" height="180">
<p>点击灯泡就可以打开或关闭这盏灯</p>
</body>
</html>
<5>JavaScript:改变 HTML 样式
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一段 JavaScript</h1>
<p id="demo">JavaScript 能改变 HTML 元素的样式。</p>
<script>
function myFunction(){
x=document.getElementById("demo") // 找到元素
x.style.color="#ff0000"; // 改变样式
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>
</body>
</html>
<6>JavaScript:验证输入
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一段 JavaScript</h1>
<p>请输入数字。如果输入值不是数字,浏览器会弹出提示框。</p>
<input id="demo" type="text">
<script>
function myFunction(){
var x=document.getElementById("demo").value;
if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,"")==""){
alert("不是数字");
}
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>
</body>
</html>
4.JavaScript 用法
HTML 中的脚本必须位于 <script>
与 </script>
标签之间。
脚本可被放置在 HTML 页面的 <body>
和 <head>
部分中。
<script>
标签
如需在 HTML 页面中插入 JavaScript,请使用 <script>
标签。
<script>
和 </script>
会告诉 JavaScript 在何处开始和结束。
<script>
和 </script>
之间的代码行包含了 JavaScript.
JavaScript 函数和事件
上面例子中的 JavaScript 语句,会在页面加载时执行。
通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时。
如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数。
在 <head>
或者 <body>
的JavaScript
您可以在 HTML 文档中放入不限数量的脚本。
脚本可位于 HTML 的 <body>
或 <head>
部分中,或者同时存在于两个部分中。
通常的做法是把函数放入 <head>
部分中,或者放在页面底部。这样就可以把它们安置到同一处位置,不会干扰页面的内容。
<head>
中的 JavaScript 函数
在本例中,我们把一个 JavaScript 函数放置到 HTML 页面的 <head>
部分。
该函数会在点击按钮时被调用。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
<script>
function myFunction(){
document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";
}
</script>
</head>
<body>
<h1>我的 Web 页面</h1>
<p id="demo">一个段落。</p>
<button type="button" onclick="myFunction()">点击这里</button>
</body>
</html>
<body>
中的 JavaScript 函数
在本例中,我们把一个 JavaScript 函数放置到 HTML 页面的 <body>
部分。
该函数会在点击按钮时被调用。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p id="demo">一个段落。</p>
<button type="button" onclick="myFunction()">点击这里</button>
<script>
function myFunction(){
document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";
}
</script>
</body>
</html>
外部的 JavaScript
我们也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。
外部 JavaScript 文件的文件扩展名是 .js。
如需使用外部文件,请在 <script>
标签的 “src” 属性中设置该 .js 文件。
myScript.js 文件
function myFunction() {
document.getElementById(“demo”).innerHTML=“我的第一个 JavaScript 函数”;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的 Web 页面</h1>
<p id="demo">一个段落。</p>
<button type="button" onclick="myFunction()">点击这里</button>
<p><b>注释:</b>myFunction 保存在名为 "myScript.js" 的外部文件中。</p>
<script src="myScript.js"></script>
</body>
</html>
5.JavaScript 输出显示数据
JavaScript 可以通过不同的方式来输出数据:
<1>使用 window.alert() 弹出警告框。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个页面</h1>
<p>我的第一个段落。</p>
<script>
window.alert(5 + 6);
</script>
</body>
</html>
<2>使用 document.write() 方法将内容写到 HTML 文档中。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction() {
document.write(Date());
}
</script>
</body>
</html>
<3>使用 innerHTML 写入到 HTML 元素。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p id="demo">我的第一个段落。</p>
<script>
document.getElementById("demo").innerHTML="段落已修改。";
</script>
</body>
</html>
<4>使用 console.log() 写入到浏览器的控制台。
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wangxing</title>
</head>
<body>
<h1>我的第一个 Web 页面</h1>
<p>浏览器中(Chrome, IE, Firefox) 使用 F12 来启用调试模式, 在调试窗口中点击 "Console" 菜单。</p>
<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>
</body>
</html>
6.JavaScript 注释
单行注释以 // 开头
多行注释以 /* 开始,以 */ 结尾
7.JavaScript 变量
<script>
//javascript的初始化函数
window.onload=function(){
//变量是用于存储信息/数据的"容器"。
//在程序运行的过程中可以随时改变变量中存储的数据
//通过var关键字声明(创建)定义 JavaScript 变量
//格式 : var 变量名称;
var num1;
//变量声明之后,该变量是空的(它没有值)。
//如果我们需要给这个变量保存信息/数据,就需要给变量赋值
//如需向变量赋值,请使用等号。
//格式 : 变量名称 = 数据;
num1=100;
//alert("num1=="+num1); //num1==100
//您也可以在声明变量时对其赋值
var num2=200;
//一条语句,多个变量,该语句以 var 开头,并使用逗号分隔变量即可。
var test1 , test2, test3;
//可以逐个为声明的变量赋值
test1="hello";
test2=1001;
test3="西安";
//一条语句,定义多个变量,在定义变量的时候可以赋值
var name="zhangsan",age=23,address="西安";
alert(name+","+age+","+address);
//关于变量名称的命名
//1.可以是数字,字母,$ , _ ,不能用数字开头
//2.$ , _ 可以作为开头,单不推荐使用
//3.变量名称对大小写敏感(y 和 Y 是不同的变量)
//var y;
//var Y;
//4.不能使用关键字
//关键字是javascript语言为一个单词赋予特殊的含义,这些赋予特殊的含义的单词就是关键字
//5.不要用中文
//6.全字母小写,如果有多个单词组成可以用$ , _ ,连接
//var hello_test;
}
</script>
8.JavaScript 数据类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript 数据类型</title>
<script>
//javascript的初始化函数
window.onload=function(){
//数据类型实际上是用来决定所定义的变量将来所能进行那些操作。
//JavaScript中的数据类型有2大类:值类型(基本类型)和引用数据类型
//值类型(基本类型): 字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol[ES6]。
//1.字符串(String)
//字符串是存储字符(比如 "hello")的变量。
//字符串可以是引号[''/""]中的任意文本。
var str1="hello";
var str2='wangxing';
//双引号中的双引号用单引号代替
var str2="hello'wangxing'";
//alert(str2);
//2.JavaScript 数字
//JavaScript 只有一种数字类型。数字可以带小数点,也可以不带。
var num1=12.5;
var num2=125;
//极大或极小的数字可以通过科学(指数)计数法来书写。
//var y=123e5; // 12300000
//var z=123e-5; // 0.00123
//9.999999999999998e+31
// 0 开头的是8进制 “0x”开头的是16进制
var num3=010; //8
//3.JavaScript 布尔
//布尔(逻辑)只能有两个值:true 或 false。布尔常用在条件判断中。
var b1=true;
var b2=false;
//4.null
//在 JavaScript 中 null 表示 "什么都没有"。
//null是一个只有一个值的特殊类型。表示一个空对象引用。
var test = null;
//alert(test);
//5.undefined -- 未赋值【未定义】
var a;
alert(a);
}
</script>
</head>
<body>
</body>
</html>
9.引用数据类型
<script>
window.onload=function(){
//引用数据类型:对象(Object)、数组(Array)、函数(Function)。
//1.JavaScript 对象
//对象由{}表示
//{}内部可以出现2中元素
//1.属性--属性名称 : 属性值 ,属性与属性之间/属性与方法之间使用","分割
//2.方法 -- 方法名称 :function(){} ,方法与方法之间/方法与属性之间使用","分割
var student={name:"zhangsan",
age:23,
address:"西安",
getInfo:function(){
alert("我是student对象的一个方法");
}
};
//对象中的属性访问
//1.得到对象中的属性值
//对象名称.属性名称 / 对象名称["属性名称 "]
//alert(student.name);
//alert(student["address"]);
//2.修改对象中的属性值
//对象名称.属性名称 = 新值
//student.name="lisi";
//alert(student.name);
//2.调用对象中的方法
//对象名称.方法名称()
//student.getInfo();
//数组(Array)
//数组--一组数据。使用一个变量来保存一组数据
//"zhangsan" 23 "西安"
//var obj={name:"zhangsan",age:23,address:"西安"};
//创建数组
//1.先创建后赋值
var arr1=new Array();
//向数组中赋值,数组名称[下标]=数据值;
//[]---数组的标志
//下标---数据值在数组中的位置,从0开始
arr1[0]="zhangsan";
arr1[1]=23;
arr1[2]="西安";
//2.创建+赋值
//var 数组名称=new Array("数据值1",数据值2,数据值3);
var arr2=new Array("zhangsan",23,"西安");
//var 数组名称=["数据值1",数据值2,数据值3];
var arr3=["zhangsan",23,"西安"];
//取出数组中的数据值
//数组名称[下标]
//alert(arr1[0]+","+arr2[1]+","+arr3[2]);
//数组的length属性---得到数组中的元素的个数
//alert(arr1.length);
//函数(Function)--实现某一个功能的代码块
//格式:function 函数名称(参数列表){函数体 [return xxxx]}
//function---声明函数的关键词
//函数名称的规则
//1.可以是数字,字母,$ , _ ,不能用数字开头
//2.$ , _ 可以作为开头,单不推荐使用
//3.函数名称对大小写敏感
//4.不能使用关键字
//关键字是javascript语言为一个单词赋予特殊的含义,这些赋予特殊的含义的单词就是关键字
//5.不要用中文
//6.全字母小写,如果有多个单词组成可以用$ , _ ,连接
//()--参数列表
//参数---接收函数之外的数据进入本函数中进行运算【帮手】
//没有参数--()
//有一个参数----(变量名称)
//有多个参数(变量名称,变量名称,变量名称)
//{}--函数体包含的是具体功能实现的代码
//[return xxxx]--函数的执行结果,有结果就写在函数体的最后一行,没有结果就不写
//1.没有参数,没有返回值的函数
function test1(){
alert("没有参数,没有返回值的函数");
}
//2.有一个参数,没有返回值的函数
function test2(num1){
alert("有一个参数,没有返回值的函数,参数是=="+num1);
}
//3.有多个参数,没有返回值的函数
function test3(num1,num2,num3){
alert("有一个参数,没有返回值的函数,参数是=="+num1+","+num2+","+num3);
}
//4.没有参数,有返回值的函数
function test4(){
alert("没有参数,有返回值的函数");
return "返回值";
}
//5.有参数,返回值的函数
function test5(num1,num2){
alert("有多个参数,有返回值的函数,参数是=="+num1+","+num2);
return "返回值";
}
//函数的调用---在需要使用函数的地方直接写函数名称([参数列表]);
//1.调用没有参数,没有返回值的函数
//test1();
//2.调用有参数,没有返回值的函数
//test3("zhangsan",23,"西安");
//3.调用没有参数,有返回值的函数,接收函数的返回值结果
//var res=test4();
//alert("test4的运行结果==="+res);
//4.有参数,返回值的函数
//var res=test5("hello","网星");
//alert("test4的运行结果==="+res);
//总结:要什么,给什么;给什么,收什么。
}
</script>
10.变量与函数的关系
<script>
window.onload=function(){
//局部变量
//在 JavaScript 函数内部声明的变量(使用 var)是局部变量
//所以只能在函数内部访问它。(该变量的作用域是局部的)。
/*
function test1(){
//局部变量
var name="zhangsan";
alert("局部变量=="+name);
}
function test2(){
alert("局部变量=="+name);
}
test2();
*/
//全局 JavaScript 变量
//在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
//全局变量
var name="zhangsan";
function test1(){
alert("局部变量=="+name);
}
function test2(){
alert("局部变量=="+name);
}
//test1();
//test2();
//局部变量会在函数运行以后被删除。
//全局变量会在页面关闭后被删除。
//如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。
//str="hello"; //此时变量属性window对象的一个属性
//alert(window.str);
//alert(str);
//JavaScript 作用域
//作用域是指定义的变量的有效范围
//局部变量:只能在函数内部访问。
//全局变量有 全局作用域: 网页中所有脚本和函数均可使用。
}
</script>
11.JavaScript 运算符
<script>
window.onload=function(){
//JavaScript 算术运算符 [+ - * / % ++ --]
//+ 用于把文本值或字符串变量加起来(连接起来)。
var str1="hello";
var str2="网星";
//alert(str1+str2);
//两个数字相加,返回数字相加的和,如果数字与字符串相加,返回字符串.
var num1=100;
//alert(str1+num1);
//++ [自动加1] 【变量++ 先用后加1】 【++变量 先加1后用】
//alert(num1++); //100
//alert(num1); //101
//alert(++num1); //101
//alert(num1); //101
//-- [自动减1] 【变量-- 先用后减1】 【--变量 先减1后用】
//alert(num1--); //100
//alert(num1); //99
//alert(--num1); //99
//alert(num1); //99
//JavaScript比较运算符 [> < >= <= == === !=]
//比较运算符在逻辑语句中使用,以测定变量或值是否相等。
//运算结果是boolean值【true [正确] / false[错误]】
var num1=120;
var num2=100;
//alert(num1 > num2);//true
//alert(num1 < num2);//false
//alert(num1 >= num2);//true
//alert(num1 <= num2);//false
//alert(num1 == num2);//false
//alert(num1 != num2);//true
//alert(num1 === num2);//false
//==与===
//==判断数据值是否相等
var test1=100;
var test2="100";
//alert(test1 == test2); //true
//=== 判断数据值与数据类型是否相等
//alert(test1 === test2); //false
//JavaScrip逻辑运算符 [|| && !取反]
// || 逻辑或--- 左右都为false是结果为false,其他都是true
//alert(true || false); //true
//alert(false || true); //true
//alert(true || true); //true
//alert(false || false); //false
// &&逻辑与 --- 左右都为true是结果为true,其他都是false
//alert(true && false); //false
//alert(false && true); //false
//alert(true && true); //true
//alert(false && false); //false
//参数运算的数据都是boolean,运算结果是boolean值【true [正确] / false[错误]】
//JavaScrip条件运算符
//格式: var res=(表达式)?value1:value2;
//判断表达式的结果 1. true -- value1数据值赋值给res
// 2. false -- value2数据值赋值给res
var testvalue=(12>3)? "大于" : "小于";
//alert(testvalue); //大于
//typeof 操作符 -- 检测变量的数据类型
var num1=12.5;
var str1="hello";
var boo=false;
var nul=null;
var un;
var student={name:"zhangsan"};
var arr=["zhangsan","lisi"];
var fun=function test1(){
alert("test1函数");
}
//alert(typeof num1); //number
//alert(typeof str1); //string
//alert(typeof boo); //boolean
//alert(typeof nul); //object
//alert(typeof un); //undefined
//alert(typeof student); //object
//alert(typeof arr); //object
//alert(typeof fun); //function
//null,对象,数组都是object类型
}
</script>
12.条件语句
if 语句
<script>
function mybutton(){
var a="";
var b=new Date().getHours()
// if(b<20){
a="good day"
}
document.getElementById("but").innerHTML=a
// }
var a=new Date().getHours()
var a=13
if(a>=6){
alert("早上好")
}
</script>
if else语句
<script>
function mybutton(){
var b=""
var time=new Date().getHours()
if(time<12){
b="早上好"
}else{
b="下午好"
}
document.getElementById("but").innerHTML=b
// }
if(b<12){
alert("早上好")
}else(
alert("下午好")
)
</script>
if…elseif…else 语句
<script>
if(b>=6 && b<11){
alert("早上好")
}else if(b>=11 && b<13){
alert("中午好")
}else if(b>=13 && b<18){
alert("下午好")
}else{
alert("晚上好")
}
</script>
if语句的嵌套
<script>
if(false){
if(false){
alert("true true");
}else{
alert("true false");
}
}else{
if(true){
alert("false true ");
}else{
alert("false false ");
}
}
</script>
if语句的嵌套
<script>
if(false){
if(false){
alert("true true");
}else{
alert("true false");
}
}else{
if(true){
alert("false true ");
}else{
alert("false false ");
}
}
</script>
switch 语句
<script>
function mybutton(){
var a;
var b=new Date().getDay()
switch(b){
case 0:a="今天是星期日";break;
case 1:a="今天是星期一"; break;
case 2:a="今天是星期二";break;
case 3:a="今天是星期三";break;
case 4:a="今天是星期四";break;
case 5:a="今天是星期五"; break;
case 6:a="今天是星期六";break;
}
document.getElementById("but").innerHTML=a
}
</script>
13.循环语句
<script type="text/javascript">
for循环
for(i=1;i<=5;i++){
alert(i)
}
遍历数组
cars=["wwe","dbq","what","by","kk"]
for(i=0;i<cars.length;i++){
document.write(cars[i])
}
var arr=["zhangsan","lisi","wangwu"];
for(var i=0;i<arr.length;i++){
alert(arr[i])
}
for/In 循环 循环遍历对象的属性名称/遍历数组
for(var 变量 in 数组/对象){
}
for/in---遍历数组得到数组下标
var arr=["zhangsan","lisi","wangwu"];
for(var ind in arr){
alert(arr[ind])
}
for/in---遍历对象的属性名称
var obj={name:"zhangsan",age:23,address:"西安"}
for(var na in obj){
alert(na)
}
forEach(function(index,element){ }); 方法
var arr=["zhangsan","lisi","wangwu"];
arr.forEach(function(index){
alert(index);
});
while 循环
循环输出1-10的整数
var a=1
while(a<=10){
alert(a)
a++
}
do/while循环 - 同样当指定的条件为 true 时循环指定的代码块
循环输出10-1的整数
var a=10
do{
alert(a)
a--
}
</script>
14.break 和 continue 语句
<script type="text/javascript">
break---中断 语句用于跳出/结束循环、switch语句中结束switch
for(var i=10;i>=1;i--){
alert(i)
if(i==7){
break;
}
}
for(var a=1;a<=10;a++){
if(a==5){
continue;
}
alert(a)
}
</script>
15.JavaScript 错误处理
<script type="text/javascript">
//1.程序出现错误是正常现象,就像人会生病
//try 和 catch
/*
语法格式:
try {
... //异常的抛出
} catch(e) {
... //异常的捕获与处理
} finally {
... //结束处理
}
*/
//try{}---包围可能出现错误的代码
//catch(e) {}--e[错误对象]/{}--捕获与处理错误
//finally{}--一般出现在catch(e){}后面,有误错误都执行,也可以不用写
function testError(){
try{
var str="try 和 catch";
updateButton(str);
}catch(eobj){
alert(eobj.name); //ReferenceError
alert(eobj.message); //updateButton is not defined
}finally{
alert("有无错误都执行");
}
}
//将可能出现的错误的代码用try{}catch(error对象){捕获处理异常}包围
//使用catch中的error对象打印输出错误提示信息
//throw 语句允许我们创建自定义错误,并抛出
//在某些情况下出现错误比不出现错误更好
function createArray(size){
try{
if(size<0){
throw "数组大小不能为负数";
}else{
var arr=new Array(size);
alert(arr.length);
}
}catch(eobj){
alert(eobj);
}
}
</script>