0
点赞
收藏
分享

微信扫一扫

第五章 函数及事件

李雨喵 2022-01-11 阅读 66
javascript

第一节:函数/方法

1.1 什么是函数

​ 函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、(OOP中)方法。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。

​ 由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。

函数:一段具有特定的功能的代码块。需要时调用,调用时执行!(自己不会主动执行!)

if(){} : 控制代码是否执行。

for(){}: 控制代码执行多少次。

function(){}: 控制代码何时执行。调用时执行。

1.2 函数分类

  1. 库函数(系统函数)

    js给我们提供的具有特定功能的代码块。

    alert() prompt() document.write() Number() parseInt() 。。。

  2. 自定义函数( 重点 )

    自己定义函数,根据自己的需求来定义功能。

1.3 函数的定义和使用

语法:

function 函数名(参数1,参数2,参数3,...)
{
    函数功能代码;
    return 函数返回值;
}

说明:

function:用于定义函数的关键字,不能写错。

函数名:使用者自己定义,命名规则:字母,数字,下划线,$,数字不能开头。小驼峰的命名方式,例如: getNum()

参数列表:在函数名后面的小括号中定义参数列表,参数可多可少,也可以没有。其实参数就是变量,可以接受数据。

函数功能代码:当前函数要实现的特定功能,是函数的核心内容。

return 返回值:在函数执行完成之后,可以通过return关键字,返回函数处理的结果。可以省略。

函数的使用:如果一个功能代码,需要被反复使用,此时建议将该代码定义为函数。另外一种情况,如果在一个处理过程中,部分代码太多,此时可以将此部分代码封装成函数,优化代码结构。

示例:洗衣服

// 定义函数
	function xiyifu(){
		document.write("将衣服放进洗衣机");
		document.write("放水");
		document.write("加洗衣粉");
		document.write("开始洗衣服");
		document.write("甩干");
	}

    //调用函数
	xiyifu();
	//调用函数
	xiyifu();
	xiyifu();

1.3.1无参无返回值的函数

 // 定义函数
	function sayHello(){
		alert("你好!");
	}
	//调用函数
	sayHello();

1.3.2无参有返回值的函数

// 返回值的使用
	function getNum(){
		// 使用return关键返回数据
		return 200;
	}
	
	// 调用函数,因为函数有返回值,所以可以进行接收
	var res = getNum();
	document.write(res);
	
	//-----------------------------------------------------
	
	var names = ["张三","李四","王五","赵六","孙琪"];

    // 返回值的使用
	function getNum(){
		// Math.random(): 
		//0-0.999999 -> (0-0.999999)*10 -> 
		//0-9.9999999 -> parseInt(0-9.9999) -> 0-9 -> (0-9)+1   ->1-10
		return parseInt(Math.random()*5)+1; // 1-5
	}

	// 获取随机数,作为下标
	var r1 = getNum();
	//var r2 = getNum();
	//var r3 = getNum();
	//alert(r1+" "+r2+" "+r3);

	alert("中将的人:"+names[r1-1]);

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

 function getNum(){
		document.write(200);
	}

	// 函数没有返回值,变量什么都接收不到,此时变量是undefined
	var res = getNum();
	alert(res);

1.3.3有参数无返回值的函数

// 定义函数
	function sayHello(mingzi){

		alert("你好!"+mingzi);
	}
	// 定义函数
	function study(who,course){
		alert(who+"学习"+course);
	}

	document.write("早上起来散步,遇到熟人:")
	// 调用函数
	sayHello("老张");
	document.write("进入教室学习");
	study("小王","html");

	document.write("中午到公元散步,遇到熟人:")
	// 调用函数
	sayHello("老李");
	document.write("进入教室学习");
	study("小丽","javascript");

1.3.4有参数有返回值的函数

/*
	function add(n1,n2){
		var res = n1+n2;
		return res;
	}

	var res = add(10,20);
	alert(res);
	*/

	// 扩展: 求任意两个区间之间(1-100,100-200)的和
	function sum(start,end){
		var he = 0;
		for(var i = start;i<=end;i++){
			he+=i;
		}
		return he;
	}

	var res = sum(1,100);
	alert(res);

1.3.5匿名函数

语法:

// 定义匿名函数
function(参数1,参数2...){
    //代码块
    return 结果;
}
// 定义匿名函数,并存储到变量中
	var x = function (){
				document.write("我是匿名函数");
			}
	// 调用匿名函数
	x();

	// 事件和函数绑定
	// window.onload:浏览器窗口中的页面加载完成事件
	window.onload=function(){
		alert(123);
	}

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

2.1 事件

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

 function test()
  {
	alert("你点我了");
  }
 
 <input type="button" value="测试" onclick="test()"/>
<!DOCTYPE html>
<html>
 <head>
  <title> new document </title>
  <style type="text/css">
 </style>

 <script type="text/javascript">
    function test(){
		alert("你点我了");
	}

	function test2(){
		alert("讨厌,把鼠标拿开");
	}

	function test3(){
		//alert("你点击了div");
		// 让div元素的背景颜色变为红色
		// 1.通过js方式,获取到div元素
		// document.getElementById("id名字"): 根据id名,获取对应元素对象
		var md =  document.getElementById("mydiv");
		//alert(md);
		console.log(md);
		// 2.通过js方式,设置元素背景
		// md:指得是div元素对象 style:指的是div的样式对象 backgroundColor:背景颜色属性
		md.style.backgroundColor="red";
	}

	function test4(){
		// 1. 通过js方式,获取到div元素
		var md = document.getElementById("mydiv");
		// 2. 通过js方式,设置元素背景
		// backgroundColor: js的属性等价于 css属性去掉中划线,
		//                                 首字母小写,其它单词首字母大写
		// fontSize: font-size
		// borderWidth: border-width
		md.style.backgroundColor="yellow";
	}
 </script>

 </head>

 <body>
	<!--html元素 :button按钮
	    事件 : on(当)click(单击)。发生一件事情
	    函数 : 完成一个特定功能。针对发生的事情做处理

		针对按钮,当点击按钮(onclick)的时候,弹出信息(test()函数)
		html js事件驱动机制,从而实现页面的特定功能
	-->
	<input type="button" 
	       value="测试按钮"
		   onclick="test()"
		   />
	<input type="button"
	       value="测试按钮2"
		   onmouseover="test2()"
		   />

	<!--onclick:鼠标单击  onmouseover:鼠标覆盖  onmouseout:鼠标移出-->
	<div id="mydiv" style="border:1px solid red;width:300px;height:200px;"
	     onclick="test3()"
		 onmouseout="test4()"
		 >
	
	</div>
 </body>
</html>

2.2 什么是对象

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

2.3 js 对象

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

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

2.4 使用js访问html元素对象

a. 设置/获取表单元素(文本框,单选,复选,下拉框...)的内容

b. 设置/获取非表单元素(h1-h6,p,div,span,a....)的内容

//通过HTML元素,触发js函数的执行
<元素 事件名="函数名()"/>
//通过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 表示 获取当前标签中的所有内容 包含标签本身

绑定事件函数三步走 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>
  <style type="text/css">
 </style>

 <script type="text/javascript">
    
	// 计算器
	// fh:接收一个运算符号
	function calc(fh){
		// 1.获取第一个文本框的数据
		var txtNum1 = document.getElementById("num1");
		var num1Val = Number(txtNum1.value);
		// 可以直接写对象并访问属性
		//var num1Val = document.getElementById("num1").value;
		//document.getElementById("num1") ===> num1 (id名)
		//var numVal1 = num1.value;

		// 2.获取第二个文本框的数据
		var txtNum2 = document.getElementById("num2");
		var num2Val = Number(txtNum2.value);
		
		// 3.做运算
		/*
		var jg = 0;
		if(fh=="+"){
			jg = num1Val+num2Val;
		}else if(fh=="-"){
			jg = num1Val-num2Val;
		}else if(fh=="*"){
			jg = num1Val*num2Val;
		}else if(fh=="/"){
			jg = num1Val/num2Val;
			// 扩展点:除以0的错误
		}*/
		switch(fh){
			case "+":
				jg = num1Val+num2Val;
				break;
			case "-":
				jg = num1Val-num2Val;
				break;
			case "*":
				jg = num1Val*num2Val;
				break;
			case "/":
				jg = num1Val/num2Val;
				break;
		}

		// 4.将运算结果赋值给结果文本框
		var txtRes = document.getElementById("res");
		txtRes.value = jg;

		//document.getElementById("res").value =jg;
		//res.value = jg;
	}

	// 扩展: eval可以执行字符串运算
	//alert(eval("20+30"));
 </script>

 </head>

 <body>
<div class="mydiv">
		<h1>计算器</h1>
		<input type="text"
			   name="num1"
			   id="num1"
			   placeholder="第一个数"
			   />
		<br/>
		<input type="text"
			   name="num2"
			   id="num2"
			   placeholder="第二个数"
			   />
		<br/>
		<input type="button"
			   value="+"
			   onclick="calc('+')"
			   />
		<input type="button"
			   value="-"
			   onclick="calc('-')"
			   />
		<input type="button"
			   value="*"
			   onclick="calc('*')"
			   />
		<input type="button"
			   value="/"
			   onclick="calc('/')"
			   />
		<br/>
		<input type="text"
			   name="res"
			   id="res"
			   placeholder="结果"
			   />
	</div>
 </body>
</html>

 

第三节 代码的调试

1 观察法调试:根据异常提示,找到错误位置,通过观察找到出错代码

2 逐步输出信息调试法:如果代码没有出错,但是结果不符合预期,可以按照代码流程逐步打印输出信息跟踪代码执行过程

3 断点调试法:使用浏览器自带的调试工具进行调试

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

4.1 事件

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

​ 发生的某件事情。通过html元素触发的事情。

4.2 常用事件

1.鼠标事件

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

2.键盘事件

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

3.浏览器事件

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

4.表单事件

* onblur元素失去焦点时触发2
* onchange该事件在表单元素的内容改变时触发( <input>, <keygen>, <select>, 和 <textarea>)2
* onfocus元素获取焦点时触发2
oninput元素获取用户输入时触发3
onreset表单重置时触发2
onsearch用户向搜索域输入文本时触发 ( <input="search">)
onselect用户选取文本时触发 ( <input> 和 <textarea>)2
* onsubmit表单提交时触发
举报

相关推荐

第五章

五,Eureka 第五章

MySQL 第五章

第五章 列表

第五章 Tomcat

第五章总结

0 条评论