JavaScript(四)—— JavaScript 函数与事件

一、JavaScript 函数

1.1 JavaScript 函数介绍

1.1.1 函数介绍

  • 函数是一段能够被调用的可重复执行的代码块,一般由事件触发或者主动调用。
  • 函数的关键词为function

1.1.2 函数格式
① 不带参数的函数

function name (){
	可重复执行的函数代码体;
};
//调用
name();

② 带参数的函数

function name (param1, param2...){
	可重复执行的函数代码体;
}
//调用
name(1, 2);

带参数的函数在执行时如果传入参数,则参数的类型必须与函数定义的数据类型一直
③ 带返回值的函数

function name (param1, param2...){
	可重复执行的函数代码体;
	return 要返回的值;
}

带返回值的函数虽然有返回值,但是不用在函数名上声明要返回的数据类型。
示例:

<script>
	function test(a, b){
		return a + b;
	}
</script>

1.1.3 局部变量与全局变量
局部变量:在函数内部声明的变量为局部变量,局部变量的使用范围有限,只能在一定的范围使用,当函数执行完毕时,变量也就随之被删除。
全局变量:在函数体外部声明的变量为全局变量,网页上的所有脚本和函数都能访问它,全局变量会在网页关闭时被删除。

示例

<script>
	var x = 10;	//全局变量
	function test(a, b){
		var y = 20;	//局部变量
		var z = (x + y) * (a + b);
		return z;
	}
	var result = test(1, 2);
	console.log("result = " + result);
</script>

显示结果
在这里插入图片描述

1.2 JavaScript 函数

二、JavaScript 事件

1.1 JavaScript 事件介绍

1.1.1 事件介绍

  • 事件,就是文档或浏览器窗中发生的一些特定的交互瞬间,JavaScript与HTML之间的交互是通过事件实现的。
  • 对于Web应用来说,有下面这些代表性的事件:点击某个元素、将鼠标移动至某个元素上方、按下键盘上某个键,等等。

1.1.2 事件语法

<button onclick="test()">点击</button>

显示结果如下
在这里插入图片描述

  • button:这个表示HTML的标签,除了这个button以外,还可以是其他的标签
  • onclick:onclick表示具体的事件,如这个表示点击事件,当被点击的时候就会触发事件
  • “test()”:这个表示事件被触发时要执行的js代码

在上述示例中,当这个button被点击时,就会触发事件执行test()方法。

1.1.3 事件的绑定方式

  • JavaScript事件是由访问Web页面的用户引起的一系列操作。例如:用户点击,当用户执行某些操作的时候,再去执行一系列代码。
  • JavaScript有两种事件模型:内联模型、外联模型(脚本模型)。

在上面的语法示例就是一种内内联模型

<body>
	<button onclick="test()">点击</button>
</body>
<script>
	function test(){
		window.alert("内联模型");
	}
</script>

此外,上述的示例等价于下面的写法,也就是外联模型

<body>
	<button id="btn">点击</button>
</body>
<script>
	//获取id为btn的元素
	var btn = document.getElementById("btn");
	btn.onclick = function(){
		window.alert("外联模型");
	}
</script>

1.1.4 事件的分类

  • 鼠标事件
  • 键盘事件
  • HTML事件
    • window事件
    • 表单事件

1.2 JavaScript 事件示例

1.2.1 页面加载事件
window.onloadwindow.onload能够在页面加载的时候就执行,即实际打开页面的初始化加载。

示例:在页面加载时即创建一个h2标签

<body>
	<div style="border: 1px red solid; width: 250px; height: 200px; text-align: center;">
		<h1 style="border: 1px red solid;">This is tag h1</h1>
		<h3 style="border: 1px red solid;">This is tag h3</h3>
	</div>
</body>
<script type="text/javascript">
	/* 页面加载时即自动创建一个h2标签,并添加到h1标签和h3标签之间 */
	window.onload = function(){
		/* 创建h2标签和标签内容 */
		var ele = document.createElement("h2");
		var txt = document.createTextNode("This is tag h2");
		ele.appendChild(txt);
		
		/* 获取父级元素和要添加到的位置的下一个元素 */
		var element = document.getElementsByTagName("div")[0];
		var next = document.getElementsByTagName("h3")[0];
		element.insertBefore(ele, next);
	}
</script>

在这里插入图片描述

1.2.2 鼠标点击事件
鼠标点击事件即在鼠标点击某个设定好的位置时,会触发事件并执行事件的内容。
鼠标点击事件使用属性onclick完成

示例:利用鼠标点击事件计算简单的算术问题

<body>
	<p>加法算数题目:</p>
	<input id="left" value="" style="width: 40px; text-align: center;"/>	<!-- 符号左边的数 -->
	<font>+</font>
	<input id="right" value="" style="width: 40px; text-align: center;"/>	<!-- 符号右边的数 -->
	<font>=</font>
	<input id="result" value="" style="width: 40px; text-align: center;"/>	<!-- 计算结果 -->
	<button onclick="sum()">点击计算</button>
	<p id="txt"></p>
</body>
<script type="text/javascript">
	/* 页面加载时将输入框内容清空 */
	window.onload = function(){
		document.getElementById("left").value = "";
		document.getElementById("right").value = "";
		document.getElementById("result").value = "";
	}
	
	/* 算术计算方法 */
	function sum(){
		/* 获取输入框的值 */
		var left = document.getElementById("left").value;
		var right = document.getElementById("right").value;
		if(left == "" || right == ""){
			document.getElementById("txt").innerHTML = "请分别在左右输入框输入要计算的数值";
		}else{
		var result = Number(left) + Number(right);
		document.getElementById("result").value = result;
		document.getElementById("txt").innerHTML = left + " + " + right + " = " + result;
		}
	}
</script>

页面加载状态
在这里插入图片描述
计算100 + 250的结果
在这里插入图片描述
一个输入框不输入内容测试
在这里插入图片描述

1.3 常见的HTML事件

1.3.1 鼠标事件

属性 描述
onclick 当用户点击某个对象时调用的事件句柄
oncontextmenu 在用户点击鼠标右键打开上下文菜单时触发
ondblclick 当用户双击某个对象时调用的事件句柄
onmousedown 鼠标按钮被按下
onmouseenter 当鼠标指针移动到元素上时触发
onmouseleave 当鼠标指针移出元素时触发
onmousemove 鼠标被移动
onmouseover 鼠标移到某元素之上
onmouseout 鼠标从某元素移开
onmouseup 鼠标按键被松开

1.3.2 键盘事件

属性 描述
onkeydown 某个键盘按键被按下
onkeypress 某个键盘按键被按下并松开
onkeyup 某个键盘按键被松开

1.3.3 框架/对象(Frame/Object)事件

属性 描述
onabort 图像的加载被中断。 ( <object>)
onbeforeunload 该事件在即将离开页面(刷新或关闭)时触发
onerror 在加载文档或图像时发生错误。 ( <object>, <body><frameset>)
onhashchange 该事件在当前 URL 的锚部分发生修改时触发
onload 一张页面或一幅图像完成加载
onpageshow 该事件在用户访问页面时触发
onpagehide 该事件在用户离开当前网页跳转到另外一个页面时触发
onresize 窗口或框架被重新调整大小
onscroll 当文档被滚动时发生的事件
onunload 用户退出页面。 ( <body><frameset>)

1.3.4 表单事件

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

1.3.5 剪贴板事件

属性 描述
oncopy 该事件在用户拷贝元素内容时触发
oncut 该事件在用户剪切元素内容时触发
onpaste 该事件在用户粘贴元素内容时触发

1.3.6 打印事件

属性 描述
onafterprint 该事件在页面已经开始打印,或者打印窗口已经关闭时触发
onbeforeprint 该事件在页面即将开始打印时触发

1.3.7 拖动事件

属性 描述
ondrag 该事件在元素正在拖动时触发
ondragend 该事件在用户完成元素的拖动时触发
ondragenter 该事件在拖动的元素进入放置目标时触发
ondragleave 该事件在拖动元素离开放置目标时触发
ondragover 该事件在拖动元素在放置目标上时触发
ondragstart 该事件在用户开始拖动元素时触发
ondrop 该事件在拖动元素放置在目标区域时触发

1.3.8 多媒体(Media)事件

属性 描述
onabort 事件在视频/音频(audio/video)终止加载时触发。
oncanplay 事件在用户可以开始播放视频/音频(audio/video)时触发。
oncanplaythrough 事件在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。
ondurationchange 事件在视频/音频(audio/video)的时长发生变化时触发。
onemptied 当期播放列表为空时触发
onended 事件在视频/音频(audio/video)播放结束时触发。
onerror 事件在视频/音频(audio/video)数据加载期间发生错误时触发。
onloadeddata 事件在浏览器加载视频/音频(audio/video)当前帧时触发触发。
onloadedmetadata 事件在指定视频/音频(audio/video)的元数据加载后触发。
onloadstart 事件在浏览器开始寻找指定视频/音频(audio/video)触发。
onpause 事件在视频/音频(audio/video)暂停时触发。
onplay 事件在视频/音频(audio/video)开始播放时触发。
onplaying 事件在视频/音频(audio/video)暂停或者在缓冲后准备重新开始播放时触发。
onprogress 事件在浏览器下载指定的视频/音频(audio/video)时触发。
onratechange 事件在视频/音频(audio/video)的播放速度发送改变时触发。
onseeked 事件在用户重新定位视频/音频(audio/video)的播放位置后触发。
onseeking 事件在用户开始重新定位视频/音频(audio/video)时触发。
onstalled 事件在浏览器获取媒体数据,但媒体数据不可用时触发。
onsuspend 事件在浏览器读取媒体数据中止时触发。
ontimeupdate 事件在当前的播放位置发送改变时触发。
onvolumechange 事件在音量发生改变时触发。
onwaiting 事件在视频由于要播放下一帧而需要缓冲时触发。

1.3.9 动画事件

属性 描述
animationend 该事件在 CSS 动画结束播放时触发
animationiteration 该事件在 CSS 动画重复播放时触发
animationstart 该事件在 CSS 动画开始播放时触发

1.3.10 过渡事件

属性 描述
transitionend 该事件在 CSS 完成过渡后触发。

1.3.11 其他事件

属性 描述
onmessage 该事件通过或者从对象(WebSocket, Web Worker, Event Source 或者子 frame 或父窗口)接收到消息时触发
onmousewheel 已废弃。 使用 onwheel 事件替代
ononline 该事件在浏览器开始在线工作时触发。
onoffline 该事件在浏览器开始离线工作时触发。
onpopstate 该事件在窗口的浏览历史(history 对象)发生改变时触发。
onshow 该事件当<menu> 元素在上下文菜单显示时触发
onstorage 该事件在 Web Storage(HTML 5 Web 存储)更新时触发
ontoggle 该事件在用户打开或关闭 <details> 元素时触发
onwheel 该事件在鼠标滚轮在元素上下滚动时触发
发布了104 篇原创文章 · 获赞 58 · 访问量 7498

猜你喜欢

转载自blog.csdn.net/baidu_27414099/article/details/104784726