JS复习笔记(Javaweb学习)

本文深入讲解JavaScript的基础知识,包括变量、运算符、数组、函数、自定义对象等内容,并介绍了常用的DOM操作方法及事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js笔记

引言:小编也在努力学习的过程中,如果hxd们有什么建议或者错误纠正,请联系我哦!点击下载文章

变量

  1. alert() 是 JavaScript 语言提供的一个警告框函数

  2. JavaScript 的变量类型:

	1. 数值类型:      number
	2. 字符串类型:    string
	3. 对象类型:      object
	4. 布尔类型:      boolean
	5. 函数类型:      function
  1. JavaScript 里特殊的值:
	undefined      未定义,所有 JS 变量为赋予初始值的时候,默认值都是undefined
	null           空值
	NaN            全称是:Not a Number。非数字,非数值。
  1. typeof() 是 JavaScript 语言提供的一个函数,可以取变量的数据类型返回

  2. JS 中的定义变量格式:

	var 变量名;
	var 变量名 =;

关系运算

  1. 等于: == 等于是简单的做字面值的比较

  2. 全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型

	var a = "12";
	var b = 12;
	
	alert(a == b); // 输出结果:true
	alert(a === b); // 输出结果:false

逻辑运算

  1. 且运算: &&

  2. 或运算: ||

  3. 取反运算: !

  4. 在 JavaScript 语言中,所有的变量,都可以作为一个 boolean 类型的变量去使用。

  5. 0、null、undefined、""(空串)都认为是 false ;

	var a = 0;
	if(a) {
		alert("零为真");
	}else {
		alert("零为假");
	} // 输出结果:零为假
	
	var b = null;
	if(b) {
		alert("null为真");
	}else {
		alert("null为假");
	}// 输出结果:null为假
	
	var c = undefined;
	if(c) {
		alert("undefined为真");
	}else {
		alert("undefined为假");
	}// 输出结果:undefined为假
	
	var d = ""; // 空串是一个空格都没有
	// 如果这里写:var d = " "; 则d不为空串,显示结果变为:空串为真
	if(d) {
		alert("空串为真");
	}else {
		alert("空串为假");
	}// 输出结果:空串为假
  1. && 且运算
    有两种情况:
    第一种:当表达式全为真的时候。返回最后一个表达式的值
    第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
	var a = "abc";
	var b = true;
	var d = false;
	var c = null;
	
	alert(a && b); // 输出结果:true
	alert(b && a); // 输出结果:true
	alert(a && d); // 输出结果:false
	alert(a && c); // 输出结果:null
	alert(a && d && c); // 输出结果:false
	
  1. || 或运算
    第一种情况:当表达式全为假的时,返回最后一个表达式的值
    第二种情况:只要有一个表达式为真。就会返回第一个为真的表达式
	var a = "abc";
	var b = true;
	var d = false;
	var c = null;
	
	alert(d || c); // 输出结果:null
	alert(c || d); // 输出结果:false
	alert(a || c); // 输出结果:abc
	alert(b || c); // 输出结果:true
	

数组

数组定义的方式:
JS 中数组的定义:
	格式:
	var 数组名 = []; // 空数组
	var 数组名 = [1, 'abc', true]; // 定义数组同时赋值元素
	var arr = []; // 定义一个空数组
	alert(arr.length); // 输出结果:0
	
	arr[0] = 12;
	alert(arr[0]); // 输出结果:12
	alert(arr.length); // 输出结果:1
	
	/* JavaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动给数组做扩容操作 */
	arr[2] = "abc";
	alert(arr.length); // 输出结果:3
	alert(arr[1]); // 输出结果:undefined
	
	// 数组的遍历
	for(var i=0; i<arr.length; i++) {
		alert(arr[i]);
	}

函数

函数的两种定义方式
  1. 第一种,可以使用 function 关键字来定义函数。
	定义的格式如下:
	function 函数名(形参列表) {
		函数体
	}
	// 定义一个无参函数
	function fun() {
		alert("无参函数fun()被调用了");
	}
	
	// 函数调用===>>>才会执行
	fun(); // 输出结果:无参函数fun()被调用了
	
	// 定义一个有参函数
	function fun2(a, b) {
		alert("有参函数fun2()被调用了, a = " + a + ", b = " + b);
	}
	
	fun2(12, "abc"); // 输出结果:有参函数fun2()被调用了, a = 12 , b = abc
	
	在 JavaScript 语言中,如何定义带有返回值的函数?
	答:只需要在函数体内直接使用 return 语句返回值即可
	//定义带有返回值的函数
	function sum(num1, num2) {
		var result = num1 + num2;
		return result;
	}
	
	alert(sum(100, 50)); // 输出结果:150
  1. 函数的第二种定义方式,格式如下:
	使用格式如下:
	var 函数名 = function(形参列表) {
		函数体
	}
	var fun = function() {
		alert("无参函数");
	}
	
	fun(); // 输出结果:无参函数
	
	var fun2 = function(a, b) {
		alert("有参函数 a = " + a + ", b = " + b);
	}
	
	fun2(1, 2); // 输出结果:有参函数 a = 1, b = 2
	
	var fun3 = function(num1, num2) {
		return num1 + num2;
	}
	
	alert(fun3(100, 200)); // 输出结果:300

注意:在 java 中函数允许重载。但是在JS中函数的重载会直接覆盖掉上一次的定义

	function fun() {
		alert("无参函数fun()");
	}
	
	function fun(a, b) {
		alert("有参函数fun(a, b)");
	}
	
	fun(); // 输出结果:有参函数fun(a, b)
函数的 arguments 隐形参数(只在 function 函数内)

就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的一个变量。我们把它叫做隐性参数。隐性参数特别像 java 基础的可变长参数一样。
public void fun(Object … args);
可变长参数其实是一个数组。那么 js 中的隐形参数也跟 java 的可变长参数一样,操作类似数组。

	function fun() {
		alert(arguments); // 输出结果:[object Arguments] 
		alert(arguments.length); // 查看参数个数 输出结果:2
		alert("无参函数fun()");
		alert(arguments[0]); // 输出结果:0
		alert(arguments[1]); // 输出结果:ab
		
		for(var i=0; i<argumrnts.length; i++) {
			alert(arguments[i]); //输出结果:0 ab
		}
	}
	
	fun(1, "ab");// 输出结果:无参函数fun()
	
	// 需求:要求编写一个函数,用于计算所有参数相加的和,并返回
	function sum(num1, num2) {
		var result = 0;
		for(var i=0; i<arguments.length; i++) {
			if(typeof(arguments[i]) == "number") { 
	// 为了防止出现alert(sum(1, 2, 3, 4, "abc", 5, 6, 7, 8, 9)) // 输出结果:10abc56789 要判断参数类型是否为 number
				result += arguments[i];
			}
		}
		return result;
	}
	
	alert(sum(1, 2, 3, 4, 5, 6, 7, 8, 9)); // 输出结果:45	

JS 中的自定义对象

Object 形式的自定义对象
	对象的定义:
	var 变量名 = new Object(); // 对象实例(空对象)
	变量名.属性名 =; // 定义一个属性
	变量名.函数名 = function(){}; // 定义一个函数
	
	对象的访问:
	变量名.属性名/函数名();
	var obj = new Object();
	alert(typeof(obj)); // 输出结果:object
	obj.name = "华仔";
	obj.age = 18;
	obj.fun = function() {
		alert("姓名:" + this.name + ",年龄:" + this.age);
	}
	alert(obj.name); // 输出结果:华仔
	obj.fun(); // 输出结果:姓名:华仔,年龄:18
{} 形式的自定义对象
	var 变量名 = {}; // 空对象
	var 变量名 = {
		属性值:, // 定义一个属性
		属性值:, // 定义一个属性
		函数名:function(){} // 定义一个函数
	};
	
	对象的访问:
	变量名.属性名/函数名();
	var obj = {}; // 空对象
	alert(typeof(obj)); // 输出结果:object
	
	var obj = {
		name: "张三",
		age: 18,
		fun : function() {
			alert("姓名:" + this.name + ", 年龄:" + this.age);
		}
	};
	alert(obj.name); // 输出结果:张三
	obj.fun(); // 输出结果:姓名:张三,年龄:18

JS 中的事件

  1. 什么是事件?
    答:事件是电脑输入设备与页面进行交互的响应。我们称之为事件。

  2. 常用的事件:

	onload   加载完成事件:     页面加载完成之后,常用于做页面js代码初始化操作
	onclick  单击事件:        常用于按钮的点击响应操作
	onblur   失去焦点事件:     常用于输入框失去焦点后验证其输入内容是否合法
	onchange 内容发生改变事件:  常用于下拉列表和输入内容发生改变后的操作
	onsubmit 表单提交事件:     常用于表单提交前,验证所有表单项是否合法
  1. 事件的注册又分为静态注册和动态注册两种:
    (1)什么是事件的注册(绑定)?
    答:其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫做事件注册或绑定。
    (2) 静态注册事件:通过HTML标签的事件属性直接赋予事件响应后的代码,这种方式叫做静态注册。
    (3)动态注册事件:是指先通过 js 代码得到标签的 dom 对象,然后通过 dom 对象 . 事件名 = function(){} 这种形式赋予事件响应后的代码,叫动态注册。
    (4)动态注册基本步骤:
    1.获取标签对象
    2.标签对象.事件名 = function(){}
onload 加载完成事件
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
</head>
	<!-- 静态注册onload事件
    		onload事件是浏览器解析完页面之后就会自动触发的事件
    -->
<body onload="alert('静态注册onload事件')">
	<!-- 输出:静态注册onload事件 -->
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title> Title</title>
	<script type="text/javascript">
		//onload事件的方法
		function onloadFun() {
			alert('静态注册onload事件,所有代码');
		}
	</script>
</head>
<body onload="onloadFun();">
	<!-- 输出:静态注册onload事件,所有代码 -->
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title> Title</title>
	<script type="text/javascript">
		//onload事件的方法
		function onloadFun() {
			alert('静态注册onload事件,所有代码');
		}
		
		//onload事件动态注册,是固定写法
		window.onload = function() {
			alert("动态注册的onload事件");
		}
		// 输出:动态注册的onload事件
	</script>
</head>
<body>

</body>
</html>
onclick 单击事件
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
	<script type="text/javascript">
		// 静态注册onclick事件
		function onclickFun() {
			alert("静态注册onclick事件");
		}
		
		// 动态注册onclick事件
		window.onload = function() {
			// 1. 获取标签对象
			/* 
			* document 是 JavaScript 语言提供的一个对象(文档)
			*/
			var btnObj = document.getElementById("btn01");
			alert(btnObj); // 输出:[object HTMLButtonElement]
            // 2. 通过标签对象.事件名 = function(){}
            btnobj.onclick = function() {
            	alert("动态组成的onclick事件");
            }
        }
	</script>
</head>
<body>
	<!-- 静态注册onlick -->
	<button onclick="onclickFun();">按钮1</button>
	<button id="btn01">按钮2</button>
</body>
</html>
onblur 失去焦点事件
	<!DOCTYPE html>
	<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Title<title>
		<script type="text/javascript">
		// 静态注册失去焦点事件
		function onblurFun() {
			// console 是控制台对象,是JavaScript语言提供,专门用来想浏览器的控制器打印输出,用于测试使用
			// log()是打印的方法
			console.log("静态注册失去焦点事件");
		}
		
		//动态注册onblur事件
		window.onload = function() {
			// 1. 获取标签对象
			var passwordObj = document.getElementById("password");
			// 2. 通过标签对象.事件名 = function(){}
			passwordObj.onblur = function() {
				console.log("动态注册失去焦点");
			}
		}
		</script>
	</head>
	<body>
		用户名:<input type="text" onbulr="onblurFun();"><br>
		密码:<input id="password" type="password"><br>
	</body>
	</html>
onchange 内容发生改变事件
<!DOCTYPE html>
<html lag="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
		//静态注册onchange
		function onchangeFun() {
			alert("女神已经改变了");
		}
		
		//动态注册onchange
		window.onload = function() {
			//1.获取标签对象
			var selObj = document.getElementById("sel01");
			//2.通过标签对象.事件名 = function(){}
			selObj.onchange = function() {
				alert("男神已经发生改变");
			}
		}
	</script>
</head>
<body>
	请选择你心中的女神:
	<!--静态注册onchange事件-->
	<select onchange="onchangeFun();">
		<option>--女神--</option>
		<option>芳芳</option>
		<option>佳佳</option>
		<option>娘娘</option>
	</select>
	
	请选择你心中的男神:
	<!--动态注册onchange事件-->
	<select id="sel01">
		<option>--男神--</option>
		<option>张三</option>
		<option>华仔</option>
		<option>富城</option>
	</select>
</body>
</html>
onsubmit 表单提交事件
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
		//静态注册onsubmit表单提交事件
		function onsubmitFun() {
			//要验证所有表单项是否合法,如果有一个不合法就阻止表单提交
			alert("静态注册onsubmit表单提交事件---发现不合法");
			return false;
		}
		//动态注册onsubmit表单提交事件
		window.onload = function() {
			//1.获取标签对象
			var formObj =  document.getElementById("form01");
			//2.通过标签对象.事件名 = function(){}
			form01.onsubmit = function() {
				alert("动态注册onsubmit表单提交事件---发现不合法");
				return false;
			}
		}
		
	</script>
</head>
<body>
	<!-- 静态注册onsubmit表单提交事件 -->
	<!-- return false可以阻止表单提交 -->
	<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
		<input type="submit" value="静态注册">
	</form>
	
	<!-- 动态注册onsubmit表单提交事件 -->
	<form action="http://localhost:8080" method="get" id="form01">
		<input type="submit" value="动态注册">
	</form>
	
</body>
</html>

DOM 模型

DOM 全称 Document Object Model 文档对象模型

大白话:就是把文档中的标签,属性,文本,转换成为对象来管理。

Document 对象
  1. 对它的理解:
    1. 第一点:document它管理了所有的html文档内容
    2. document 它是一种树结构的文档,有层级关系
    3. 它让我们把所有的标签都对象化
    4. 我们可以通过document访问所有的标签对象
Document 对象中的方法介绍
document.getElementById(elementId)
通过标签的id属性查找dom对象,elementId是标签的id属性值

document.getElementsByName(elementName)
通过标签的name属性查找标签dom对象,elementName是标签的name属性值

document.getElementsByTagName(tagname)
方法,通过给定的标签名,创建一个标签对象。tagName是要创建的标签名。

注释:
document对象的三个查询方法,如果有id属性,优先使用getElementById方法来进行查询,如果没有id属性,则优先使用getElementsByName方法来进行查询,如果id属性和name属性都没有,最后再按标签名查getElementsByTagName

以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。
1. getElementById()的实例:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
		/*
		* 需求:当用户点击了校验按钮,要获取输入框里的内容,验证其是否合法
		* 验证的规则是:必须有字母,数字,下划线组成,并且长度是5到12位
		* */
		function onclickFun() {
			// 1. 当我们要操作一个标签的时候,一定要先获取这个标签对象
			var usernameObj = document.getElementById("username");
			alert(usernameObj);
			alert(usernameObj.value);
			var usernameText = usernameObj.value;
			// 如何验证字符串符合某些规则,需要使用正则表达式技术
			var patt = /^\w{5,12}&/;
			/*
			* test() 方法用于测试某个字符是不是匹配我的规则
			* 匹配就返回true,不匹配就返回false
			*/
			if(patt.text()) {
				alert("用户名合法");
			}else {
				alert("用户名不合法");
			}
		}
	</script>
</head>
<body>
	用户名:<input type="text" id="username" value=""/>
	<button onclick="onclickFun()">校验</button>
</body>
</html>
2. getElementsByName()的实例

返回的是多个

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
	// 全选
	function checkAll() {
		// 让所有复选框都选中
		// document.getElementsByName(); 是根据指定的name属性查询返回多个标签集合
		// 这个集合的操作和数组一样
		// 集合中每个元素都是dom对象
		// 集合中的元素顺序是他们在HTML页面中从上到下的顺序
		// checked 表示复选框的选中的状态,如果选中时true,不选中是false
		// checked属性可读可写
		var hobbies = document.getElementsByName("hobby");
		for(var i=0; i<hobbies.length; i++) {
			hobbies[i].cheaked = true;
		}
	}
	//全不选
	function checkNo() {
		var hobbies = document.getElementsByName("hobby");
		for(var i=0; i<hobbies.length; i++) {
			hobbies[i].cheaked = false;
		}
	}
	//反选
	function checkReverse() {
		var hobbies = document.getElementsByName("hobby");
		for(var i=0; i<hobbies.length; i++) {
			if(hobbies[i].checked) {
				hobbies[i].checked = false;
			}else {
				hobbies[i].checked = true;
			}
		}
	}
	</script>
</head>
<body>
兴趣爱好:
<input type="checkbox" name="hobby" value="cpp">C++
<input type="checkbox" name="hobby" value="java">java
<input type="checkbox" name="hobby" value="js">JavaScript
<br>
<button onclick="checkAll();">全选</button>
<button onclick="checkNo();">全不选</button>
<button onclick="checkReverse();">反选</button>
</body>
</html>
3. getElementsByTagName()的实例
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
	// 全选
	function checkAll() {
		// document.getElementsByTagName(""); 是按照指定标签名来进行查询并返回集合
		// 这个集合的操作与数组一样
		// 集合中都是dom对象
		// 集合中元素顺序,是他们在HTML页面中从上到下的顺序
		var inputs = document.getElementsByTagName("input");
		for(var i=0; i<inputs.length; i++) {
			inputs[i].checked = true;
		}
	}
	</script>
</head>
<body>
	兴趣爱好:
	<input type="checkbox" value="cpp">C++
    <input type="checkbox" value="java">java
    <input type="checkbox" value="js">JavaScript
    <br>
    <button onclick="checkAll();">全选</button>
</body>
</html>
正则表达式
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
	
		//var patt = /^\w{5, 12}$/;
		
		//表示要求字符串中,是否包含字母e
		//var patt = new RegExp("e");// var patt = /e/; 也是正则表达式
		//alert(patt); // 输出:/e/
		//var str = "abcd";
		//var str1 = "abcde";
		//alert(patt.test(str)); // 输出:false
		//alert(patt.test(str1)); // 输出:true
		var patt = /[abc]/; // 表示是否包含字母a或b或c
		var patt = /[a-z]/; // 表示是否包含小写字母
		var patt = /[A-Z]/; // 表示是否包含大写字母
		var patt = /[0-9]/; // 表示是否包含任意数字
		var patt = /\w/; // 表示是否包含字母,数字,下划线
		var patt = /a+/; // 表示是否包含至少一个a
		var patt = /a*/; // 表示是否包含零个或多个a
		var patt = /a?/; // 表示是否包含一个或零个a
		var patt = /a{3}/; // 表示是否包含连续三个a
		var patt = /a{3, 5}/; // 表示是否包含至少3个连续的a,最多5个连续的a
		var patt = /a{3,}/; // 表示是否包含至少3个连续的a
		var patt = /a$/; // 表示必须以a结尾
		var patt = /^a/; // 表示必须以a开头
		var patt = /^a{3, 5}$/; // 表示从头到尾必须完全匹配至少3个连续的a,最多5个连续的a
	</script>
</head>
<body>

</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title<title>
	<script type="text/javascript">
		/*
		* 需求:当用户点击了校验按钮,要获取输入框里的内容,验证其是否合法
		* 验证的规则是:必须有字母,数字,下划线组成,并且长度是5到12位
		* */
		function onclickFun() {
			// 1. 当我们要操作一个标签的时候,一定要先获取这个标签对象
			var usernameObj = document.getElementById("username");
			alert(usernameObj);
			alert(usernameObj.value);
			var usernameText = usernameObj.value;
			// 如何验证字符串符合某些规则,需要使用正则表达式技术
			var patt = /^\w{5,12}&/;
			/*
			* test() 方法用于测试某个字符是不是匹配我的规则
			* 匹配就返回true,不匹配就返回false
			*/ 
			var usernameSpanObj =  document.getElementById("usernameSpan");
			// innerHTML 表示起始标签和结束标签中的内容
			// innerHTML 这个属性可读可写
			alert(usernameSpanObj.innerHTML);
			
			if(patt.text()) {
				//alert("用户名合法");
				//usernameSpanObj.innerHTML = "用户名合法";
				usernameSpanObj.innerHTML = "<img src="right.jpg" width="18" height="18">";
			}else {
				//alert("用户名不合法");
				//usernameSpanObj.innerHTML = "用户名不合法";
				usernameSpanObj.innerHTML = "<img src="wrong.jpg" width="18" height="18">";
			}
		}
	</script>
</head>
<body>
	用户名:<input type="text" id="username" value=""/>
	<span id="usernameSpan" style="color:red;"></span>
	<button onclick="onclickFun()">校验</button>
</body>
</html>
节点的常用属性和方法

节点就是标签对象

方法:
通过具体的元素调用getElementsByName()方法,获取当前节点的指定标签名孩子节点

appendChild(oChildNode)方法,可以添加一个子节点,oChildNode 是要添加的孩子节点

属性:

childNodes        属性:获取当前节点的所有子节点
firstChild        属性:获取当前节点的第一个子节点
lastChild         属性:获取当前节点的最后一个子节点
parentNode        属性:获取当前节点的父节点
nextSibling       属性:获取当前节点的下一个节点
previousSibling   属性:获取当前节点的上一个节点
className         属性:用于获取或设置标签的 class 属性
innerHTML         属性:表示获取/设置起始标签和结束标签中的内容
innerText         属性:表示获取/设置起始标签和结束标签中的文本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名小白猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值