第五章 函数及事件 ① 笔记

导读:本篇文章讲解 第五章 函数及事件 ① 笔记,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

回顾

数组的使用

本章目标

函数,事件,js对象,js操作页面元素

第一节:函数/方法

1.1 什么是函数

 函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、(OOP中)方法。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。
 由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。在程序设计中,常将一些常用的功能模块编写成函数,放在函数库供公共选用。要善于利用函数,以减少重复编写程序段的工作量。
函数:一段具有特定的功能的代码块。需要时调用,调用时执行!(自己不会主动执行!)
if(){} : 控制代码是否执行。
for(){}: 控制代码执行多少次。
function(){}: 控制代码何时执行。调用时执行。

1.2 函数分类

库函数(系统函数)
js给我们提供的具有特定功能的代码块。
1.alert() prompt() document.write() Number() parseInt() 。。。
 自定义函数( 重点 )
1.自己定义函数,根据自己的需求来定义功能。

1.3 函数的定义和使用

函数的作用: 实现模块/功能封装,实现代码复用。
语法:

	// 定义
	function 函数名(参数1,参数2,参数3,...)
	{
		函数功能代码;
		return 函数返回值; //返回值可以省略
	}
	//调用
	函数名(数据1,数据2,数据3...);

说明:
function :用于定义函数的关键字,不能写错。
函数名 :使用者自己定义,命名规则:字母,数字,下划线,$,数字不能开头。小驼峰的命名方式,例如: getNum()
参数列表 :在函数名后面的小括号中定义参数列表,参数可多可少,也可以没有。其实参数就是变量,可以接受数据。
函数功能代码 :当前函数要实现的特定功能,是函数的核心内容。
return 返回值 :在函数执行完成之后,可以通过return关键字,返回函数处理的结果。可以省略。
函数的使用:如果一个功能代码,需要被反复使用,此时建议将该代码定义为函数。另外一种情况,如果在一个处理过程中,部分代码太多,此时可以将此部分代码封装成函数,优化代码结构。
示例:洗衣服

	//1.重复要做的事情
	//2.后期可能有变化的事情
	//定义函数:完成洗衣服的功能
	// 洗衣机来洗衣服
	function xyj(){
		document.write("拿出要洗的衣服<br/>");
		document.write("放到洗衣机中<br/>");
		document.write("加水<br/>");
		document.write("加洗衣液<br/>");
		document.write("启动洗衣机<br/>");
		document.write("自动甩干<br/>");
	}
	//周一洗衣服:
	// 调用函数: 函数名();
	xyj();
	//周三洗衣服:
	xyj();
	//周六洗衣服:
	xyj();

1.3.1无参无返回值的函数

实例:打招呼

	//定义函数
	//打招呼
	//无参,无返回值
	/*
	function 函数名(){
		函数体
	}
	*/
	function sayHello(){
		//这只是个输出,不是返回值
		document.write("你好");
	}
	//调用函数
	sayHello();

1.3.2无参有返回值的函数哦

实例:抽奖

	<script type="text/javascript">
		//随机数:1.范围[0,1) 0-0.999999999
		// 2.小数数据随机
		//var r = Math.random();
		//document.write(r+"<br/>");
		// 问:如何生成一个1-60的随机数
		// [0,1) * 60 => 0,59.999999 + 1 => 1,60.9999999 => parseInt(数据)
		//r= parseInt(Math.random()*60+1);
		//document.write(r);
		//定义函数用于返回0-60的
		// 随机获取某人
		function getMR(){
			//学生数组
			var stus = [
			"张三", //0
			"李四", //1
			"王五", //2
			"赵六", //3
			"孙琪" //4
			];
			//随机获取下标
			//获取 0-4
			var r = parseInt(Math.random()*5);
			//获取数组中的某个元素
			//return后面跟的数据就是函数的返回值
			return stus[r];
		}
		document.write("111111111<br/>");
		document.write("111111111<br/>");
		//调用函数,定义变量,接受函数的返回值
		var xxx = getMR();
		document.write("函数的返回值是:"+xxx+"<br/>");
		document.write("111111111<br/>");
		document.write("111111111<br/>");
	</script>

注意:如果函数的最后没有使用return返回结果,此时如果使用变量接受函数,则接受的数据为undefined。

	/*
	//定义函数
	function say(){
		document.write("你好");
	}
	// 调用函数,并接收返回值
	//问题是:人家函数有给你返回值么????
	var v = say();
	//接的是个啥: undefined
	document.write(v);
	*/
	//定义函数
	function say(){
		document.write("你好");
		//通过return才能定义函数的返回值
		return 100;
	}
	// 调用函数,并接收返回值
	var v = say();
	//接的是个啥: 100
	document.write(v);

1.3.3有参数无返回值的函数

实例:给某人打招呼,某人学习课程

	<script type="text/javascript">
		//有参,无返回值
		//给某人打招呼
		function hello(name){
			//函数的参数:就是一个变量,可以接收调用者传入的值
			alert("你好,"+name);
		}
		//调用函数
		//hello("张三");
		//hello("李四");
		//hello("王五");
		//有参(括号中有定义变量),无返回值(函数没有return)
		function study(name,course,hours){
			document.write(name+"学习"+course+"学习"+hours+"小时<br/>");
		}
		//调用函数
		study("张三","js",10);
		document.write("111111111111111111111<br/>");
		document.write("111111111111111111111<br/>");
		document.write("111111111111111111111<br/>");
		document.write("111111111111111111111<br/>");
		document.write("111111111111111111111<br/>");
		study("李四","html",3);
		hello("张三");
		document.write("111111111111111111111<br/>");
		document.write("111111111111111111111<br/>");
		hello("李四");
	</script>

在这里插入图片描述

1.3.4有参数有返回值的函数

实例:求任意两个区间的和

	<script type="text/javascript">
		//求任意区间的数字和: 1-100,50-200,30-80
		//有参(括号中有变量),有返回值(方法有return返回值)
		function qh(start,end){
			var sum = 0;
			for(var i=start;i<=end;i++){
				sum+=i;
			}
			return sum;
		}
		//调用函数:1-100,50-200,30-80
		var res = qh(1,100)
		document.write("1-100:"+res+"<br/>");
		res = qh(50,200)
		document.write("50-200:"+res+"<br/>");
		res = qh(30,80)
		document.write("30-80:"+res+"<br/>");
	</script>

扩展: 定义函数,实现接受一个年份和月份,返回该月份的天数(考虑2月份的问题)

1.3.5匿名函数

语法:

	// 定义匿名函数
	function(参数1,参数2...){
		//代码块
		return 结果;
	}
	```
	```
	// 定义匿名函数,并存储到变量中
	var x = function (){
		document.write("我是匿名函数");
	}
	// 调用匿名函数
	x();
	// 事件和函数绑定
	// window.onload:浏览器窗口中的页面加载完成事件
	window.onload=function(){
		alert(123);
	}
	<script type="text/javascript">
	//匿名函数
	//匿名函数要存储之后,或者事件关联才能使用
	var x = function(){
		alert("你好");
	}
	//调用匿名函数
	//x();
	//onload:页面加载完成事件
	//绑定匿名函数,这样的话,等事件发生的时候,自动执行匿名函数
	window.onload=function(){
		alert(title.innerHTML);
	}
	</script>
	</head>
	<body>
		<h1 id="title">这是标签内容</h1>
	</body>

第二节 网页元素的事件和函数

2.1 事件

事件:就是发生了一件事,通常我们会将html元素事件和特定的方法绑定到一起,当事件
触发的时候,程序自动执行绑定的方法,以此完成特定的程序处理。这就是程序的事件
驱动机制。

//通过HTML元素,触发js函数的执行
<元素 事件名="函数名()"/>

实例1:按钮点击触发函数调用
实例2:通过任意事件触发修改元素背景颜色

在这里插入图片描述

	<!DOCTYPE html >
	<html>
		<head>
			<title> New Document </title>
			<meta charset="utf-8">
			<script type="text/javascript">
				//对象:具有一系列属性和行为的事物称为对象
				// 人: 姓名,性别,年龄,身高.... 吃,喝....
				// 按钮: 标签名,id,class,value.... 点击,双击,.....
				// h1:
				// p:
				// 自定义函数
				function test1(){
					alert("你点我了");
				}
				//让p元素的背景变化
				function test2(){
					//通过js的方式,改变元素样式
					//1.获取元素对象
					// document.getElementById(id名字):根据id获取元素对象
					//获取文档中id名位myp的元素对象
					var pys = document.getElementById("myp");
					//2.用js的方式修改对象的样式属性
					// css样式:background-color js的写法: backgroundColor
					// font-size fontSize
					// color color
					pys.style.backgroundColor="red";
				}
				//让span的字体变化:字体颜色变为绿色,大小变为50px
				function test3(){
					//通过js的方式,改变元素样式
				}
			</script>
		</head>
		<body>
			<!--单击元素时(特定事件),进行特定处理(调用函数)-->
			<h1 onclick="test1()">这是一个标题</h1>
			<div onclick="test1()">这是一个div</div>
			<!--onmouseover鼠标移入到元素上时,进行特定处理-->
			<p onmouseover="test2()" id="myp">这是一个p</p>
			<span onmouseout="test3()">这是一个span</span>
		</body>
	</html>

2.2 什么是对象

 在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和(行为)方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。

2.3 js 对象

js对象 :包含了html元素对象,以及其它js内置或自定义的对象。

	//根据id获取到html元素, 获取的就是一个html元素对象
	var v = document.getElementById("id");
	alert(v);
	console.log(v);

2.4 使用js访问html元素对象

表单元素.value/非表单元素.innerHTML

a. 设置/获取表单元素(文本框,单选,复选,下拉框…)的内容
b. 设置/获取非表单元素(h1-h6,p,div,span,a…)的内容

	//通过js访问HTML元素
	1.表单元素
	获取表单元素数据:
	var bl = document.getElementById("表单元素id").value;
	设置表单元素数据
	document.getElementById("表单元素id").value="数据"
	
	2.非表单元素
	获取非表单元素的内容
	var nr = document.getElementById("非表单元素id").innerHTML;
	设置非表单元素的内容
	document.getElementById("非表单元素id").innerHTML="数据";
	
	3.通过js设置元素样式
	设置元素的行内样式
	document.getElementById("元素id").style.color="字体颜色";
	设置元素的类样式
	document.getElementById("元素id").className="类样式名";

innerText 表示 获取标签中的文本(内容 ) 不包含标签
innerHTML 表示 获取标签中的所有内容 (包含标签+文本)
outerHTML 表示 获取当前标签中的所有内容 包含标签本身
绑定元素的事件函数三步走(事件驱动机制):
3w,针对哪个元素,在什么时候,做什么处理
who 触发事件的事件源 :给谁绑定函数 (哪个标签)。针对哪个元素
When 什么时机 点击时触发 事件操作 。在什么时候
what 干什么 函数的主体代码。做什么事情

案例1:改变页面颜色

	<!DOCTYPE html>
	<html>
		<head>
			<title> new document </title>
			<style type="text/css">
			</style>
			<script type="text/javascript">
				// 调试问题:
				// 1.页面控制台是否出错。观察法
				// 2.函数代码全都注释,只留一个弹窗。排除法。
				function changeColor(){
				//alert(123);
				// 实现点击按钮切换页面背景
				// 切换页面背景: document.body.style.backgroundColor=""
				//document.body.style.backgroundColor="red";
					if(document.body.style.backgroundColor=="red"){
						document.body.style.backgroundColor="green";
					}else if(document.body.style.backgroundColor=="green"){
						document.body.style.backgroundColor="blue";
					}else{
						document.body.style.backgroundColor="red";
					}
				}
			</script>
		</head>
		<body>
			<input type="button" value="改变页面背景" onclick="changeColor()"/>
		</body>
	</html>

案例2:计算器

1.写界面(标题,三个文本框,四个按钮)
2.实现加减乘除的函数,与按钮的单击事件绑定

在这里插入图片描述
在这里插入图片描述

	<!DOCTYPE html >
	<html>
		<head>
			<title> New Document </title>
			<meta charset="utf-8">
			<script type="text/javascript">
			//var x; "xxx",'sdfsd',20,234.234
			//定义计算器
			//ysf:接受方法调用时,传入的运算符参数
			function jisuan(ysf){
				//显示运算符
				//alert(ysf);
				//1.获取文本框的值
				var txt1 = document.getElementById("num1");
				var v1 = Number(txt1.value);
				var txt2 = document.getElementById("num2");
				var v2 = Number(txt2.value);
				//2.根据传入的运算符做运算
				var jg ;
				switch(ysf){
					case "+":
						jg = v1+v2;
						break;
					case "-":
						jg = v1-v2;
						break;
					case "*":
						jg = v1*v2;
						break;
					case "/":
						jg = v1/v2;
						break;
				}
				//3.将运算结果设置到结果文本框中
				var txtRes =document.getElementById("res");
				txtRes.value = jg;
			}
			</script>
		</head>
		<body>
			<table border="1" align="center">
				<caption>计算器</caption>
				<tr>
					<td>数据1</td>
					<td>
						<input type="text" name="num1" id="num1" />
					</td>
				</tr>
				<tr>
					<td>数据2</td>
					<td>
						<input type="text" name="num2" id="num2"/>
					</td>
				</tr>
				<tr>
					<td>运算</td>
					<td>
						<input type="button" value="+" onclick="jisuan('+')"/>
						<input type="button" value="-" onclick="jisuan('-')"/>
						<input type="button" value="*" onclick="jisuan('*')"/>
						<input type="button" value="/" onclick="jisuan('/')"/>
					</td>
				</tr>
				<tr>
					<td>结果</td>
					<td>
						<input type="text" name="res" id="res"/>
					</td>
				</tr>
			</table>
		</body>
	</html>

案例3:猜数字

a.生成一个随机数1-100并不显示出来
b.让用户在文本框中输入他猜的数字
c.点击猜一猜按钮的时候,比较用户输入的值和随机数,是大是小,进行提示
// 扩展:只能猜5次
在这里插入图片描述

	<!DOCTYPE html >
	<html>
		<head>
			<title> New Document </title>
			<meta charset="utf-8">
			<script type="text/javascript">
				//生成一个1-100的随机数
				// var r = Math.random()
				var r = 79;
				//定义函数实现输入数据和随机数的比较
				function bijiao(){
					// 获取文本框中的数据
					var txt = document.getElementById("num");
					var v = Number(txt.value);
					//做比较
					if(v>r){
						//alert("猜大了")
						var mydiv = document.getElementById("tip");
						// innerHTML:设置成对标签的内部内容
						mydiv.innerHTML = "猜大了";
					}else if(v<r){
						alert("猜小了")
					}else{
						alert("猜对了");
					}
				}
			</script>
		</head>
		<body>
			输入一个数据:
			<input type="text" id="num"/>
			<input type="button" value="猜一猜" onclick="bijiao()"/>
			<hr/>
			<div id="tip">
			这里显示提示信息
			</div>
		</body>
	</html>

第三节 代码的调试

1 观察法调试:根据异常提示,找到错误位置,通过观察找到出错代码
2 逐步输出信息调试法:如果代码没有出错,但是结果不符合预期,可以按照代码流程
逐步打印输出信息跟踪代码执行过程
3 断点调试法:使用浏览器自带的调试工具进行调试
firefox浏览器:
在这里插入图片描述

在这里插入图片描述
VS code:(关联浏览器环境,运行就会有信息提示)
在这里插入图片描述
ie浏览器
在这里插入图片描述

第四节:网页中的常用事件

4.1 事件

 事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。
 发生的某件事情。通过html元素触发的事情。

4.2 常用事件

1.鼠标事件

事件
* onclick 点击事件
ondblclick 双击事件
onmousedown 鼠标按下
onmouseup 鼠标松开
onmouseover 鼠标移入
onmouseout 鼠标移出

2.键盘事件

onkeydown 按下
onkeyup 松开
onkeypress 按下并松开

3.浏览器事件

*onload 页面加载完成时触发
*onunload 页面退出时触发

4.表单事件

在这里插入图片描述

5.扩展

在这里插入图片描述

自学案例:

图片切换:点击上一张,下一张,让图片切换

在这里插入图片描述

	<!DOCTYPE html >
	<html>
		<head>
			<title> New Document </title>
			<meta charset="utf-8">
			<script type="text/javascript">
				var i = 0;
				// 下一张图片
				function nextImg(){
					i++;
					var str = "js"+i+".gif";
					//alert(str);
					var jiangshi = document.getElementById("jsImg");
					jiangshi.src = "img/"+str;
					//扩展:要求轮回显示,上一张,下一张显示完整
				}
			</script>
		</head>
		<body>
			<input type="button" value="下一张" onclick="nextImg()"/>
			<input type="button" value="上一张"/>
			<hr/>
			<img src = "img/js0.gif" id="jsImg"/>
		</body>
	</html>

总结:

函数,事件,对象
总结:函数 学会函数的定义和调用
调用:直接,跟标签事件绑定
获取对象:document.getElementById();

练习:

首要目标:课堂案例 搞清楚 大熟练
作业1:整5个文本框,计算最大 最小 平均以及和,并显示到一个标签中。
 注意:录入的值必须是数字 点击按钮时判断不能为空必须是数字–附加
作业2:在页面上创建四个文本框:省 市 县 详细地址。通过按钮触发:将地址信息
拼接显示在整体地址的div中
作业3:在页面上创建三个下拉框 和一个文本框 ,通过下拉框的onchange事件(内容改
变事件)将信息拼接显示在文本框中
作业4:计算器(自己能够独立完成)。
要求:每天的所有案例,5遍以上
 1.先写整体思路流程
 2.把每一步的步骤,注释 写好。
 3.做填空题。
避免:感觉自己会

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118167.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!