JavaWeb学习笔记——javascript

基本语法

script标签

alert():警告框函数,传入的参数是警告框内要显示的信息

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>1.script标签</title>
	<script type="text/javascript">
		//alert()是JavaScript提供的一个警告函数,可以接收任意类型的参数,这个参数就是警告框内显示的信息
		alert("hello JavaScript");
	</script>
</head>
<body>

</body>
</html>

引入js代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>2.引入JavaScript代码</title>
	<!-- 
	使用script标签引入js代码
		src属性专门用来引入 js文件路径(可以是相对路径,也可以是绝对路径)
		
	script标签可以用来定义 js代码,也可以用来引入 js文件
	但是,两个功能二选一使用,不能同时使用两个功能,定义两个script标签即可
	 -->
	<script type="text/javascript" src="2.js代码.js"></script>
	<script type="text/javascript">alert("123");</script> 
</head>
<body>

</body>
</html>

2.js代码.js

/**
 * 2.引入JavaScript代码.html对应的js代码
 */
alert("hello JavaScript");

变量

typeof(x):判断x的数据类型

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>3.变量</title>
	<script type="text/javascript">
		/*
		JavaScript 的变量类型:
		数值类型: number
		字符串类型: string
		对象类型: object
		布尔类型: boolean
		函数类型: function
		
		选择符合要求的数据类型:
			if(typeof(x)=="number"){
				
			}
		
		JavaScript 里特殊的值:
		undefined 未定义,所有 js变量未赋初始值的时候,默认值都是 undefined.
		null 空值
		NaN 全称是:Not a Number。非数字,非数值。
		
		JS 中的定义变量格式:
		var 变量名;
		var 变量名 = 值;
		*/
		var i;
		alert(i);//undefined
		i = 12;
		//typeof()可以返回变量的数据类型
		alert(typeof(i));//number
		
		i = "abc";
		alert(typeof(i));//string
		
		var a = 1;
		var b = "abc";
		alert(a*b);//NaN
	</script>
</head>
<body>

</body>
</html>

比较运算

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>4.比较运算</title>
	<script type="text/javascript">
		/*
		等于: == 等于是简单的做字面值的比较
		全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
		*/
		var a = "12";
		var b = 12;
		alert( a == b ); //true
		alert( a === b ); //false
	</script>
</head>
<body>

</body>
</html>

逻辑运算

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>5.逻辑运算</title>
	<script type="text/javascript">
		/*
		且运算: &&
		或运算: ||
		取反运算: !
		
		在 JavaScript中,所有的变量,都可以做为一个 boolean类型的变量去使用
		0 、null、 undefined、""(空串) 都认为是 false

		&& 且运算:
		有两种情况:
			第一种:当表达式全为真的时候。返回最后一个表达式的值。
			第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
		
		|| 或运算:
			第一种情况:当表达式全为假时,返回最后一个表达式的值
			第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值
		
		&&运算和||运算有短路:
			短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行
		*/
		var a = "abc";
		var b = true;
		var c = null;
		var d = false;
		
		//alert( a && b );//true
		//alert( b && a );//abc
		//alert( a && d );//false
		//alert( a && c );//null

		//alert( d || c );//null
		//alert( c || d );//false
		//alert( a || c );//abc
		//alert( b || c );//true
	</script>
</head>
<body>

</body>
</html>

数组

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>6.数组</title>
	<script type="text/javascript">
		/*
		js中数组的定义:
		格式:
			var 数组名 = []; // 空数组
			var 数组名 = [1, 'abc', true];//定义数组同时赋值元素
			
		javaScript中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动给数组做扩容操作
		*/
		var arr = [];
		alert(arr.length);//0
		
		arr[0] = 12;
		alert(arr[0]);//12
		alert(arr.length);//1
		
		arr[2] = "abc";
		alert(arr[2]);//abc
		alert(arr[1]);//undefined
		alert(arr.length);//3
		
		//数组的遍历
		for(var i=0; i<arr.length; i++){
			alert(arr[i]);//12 undefined abc
		}
	</script>
</head>
<body>
	
</body>
</html>

函数

第一种方式

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>7.函数_1</title>
	<script type="text/javascript">
		/*
		定义函数的第一种方式:
			格式:
			function 函数名(形参列表) {
				函数体
			}
		
		在 Java中函数允许重载,但是在JS中函数的重载会直接覆盖掉上一次的定义
		*/
		//无参函数
		function fun1(){
			alert("fun1");
		}
		fun1();
		
		//有参函数
		function fun2(a, b){
			alert("a="+a+", "+"b="+b);
		}
		fun2(1, "abc");
		
		//有返回值的函数
		function fun3(a, b){
			return a + b;
		}
		alert(fun3(1, 2));
	</script>
</head>
<body>

</body>
</html>

第二种方式

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>7.函数_2</title>
	<script type="text/javascript">
		/*
		定义函数的第二种方式:
		格式:
			var 函数名 = function(形参列表) { 
				函数体 
			}
		
		在 Java中函数允许重载,但是在JS中函数的重载会直接覆盖掉上一次的定义
		*/
		//无参函数
		var fun1 = function(){
			alert("123");
		}
		fun1();
		
		//有参函数
		var fun2 = function(a, b){
			alert(a+b);
		}
		fun2(1, 2);
		
		//有返回值的函数
		var fun3 = function(a, b){
			var res = a + b;
			return res;
		}
		alert(fun3(2, 4));
	</script>
</head>
<body>

</body>
</html>

隐式参数arguments

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>8.隐式参数arguments</title>
	<script type="text/javascript">
		/*
		js中的函数,可以通过arguments属性,获取传入该函数的所有参数,类似于Java中的可变参数
		*/
		function fun(){
			alert(arguments.length);//可变参数个数
			alert(arguments[0]);
			alert(arguments[1]);
			alert(arguments[2]);
			
			for (var i=0; i<arguments.length; i++){
				alert(arguments[i]);
			}
		}
		fun(1,"ad",true);
		
		//需求:编写 一个函数,计算所有参数相加的和并返回
		function sum(){
			var res = 0;
			for(var i=0; i<arguments.length; i++){
				res += arguments[i];
			}
			return res;
		}
		alert(sum("abc",1,2,3));//0abc123
		alert(sum(1,2,3,4));//10
		
		//优化sum
		function sumPro(){
			var res = 0;
			for(var i=0; i<arguments.length; i++){
				if(typeof(arguments[i])=="number"){
					res += arguments[i];	
				}
			}
			return res;
		}
		alert(sumPro("abc",1,2,3));//6
	</script>
</head>
<body>

</body>
</html>

自定义对象

{ }形式

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>9.{}形式的自定义对象</title>
	<script type="text/javascript">
		/*
		对象的定义:
			var 变量名 = { 	// 空对象
				属性名:值, 	//定义一个属性
				属性名:值, 	//定义一个属性
				函数名:function(){} //定义一个函数
			};
			
		对象的访问:
			变量名.属性 / 函数名();
		*/
		var obj = {
			name: "迪达拉",	
			age: 20,
			func: function(){
				alert("姓名:" + this.name + ",年龄:" + this.age);
			}
		};
		
		alert(obj.name);
		alert(obj.age);
		obj.func();
	</script>
</head>
<body>

</body>
</html>

Object形式

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>9.Object形式的自定义对象</title>
	<script type="text/javascript">
		/*
		对象的定义:
			var 变量名 = new Object(); //对象实例(空对象)
			变量名.属性名 = 值; // 定义一个属性
			变量名.函数名 = function(){} //定义一个函数
		
		对象的访问:
			变量名.属性 / 函数名();
		*/
		var obj = new Object();
		obj.name = "天道";
		obj.age = 22;
		obj.func = function(){
			alert("姓名:" + this.name + ",年龄:" + this.age);
		}
		alert(obj.name);
		alert(obj.age);
		obj.func();
	</script>
</head>
<body>

</body>
</html>

事件

在这里插入图片描述
注意:onsubmit事件要绑定在表单(form标签)上

onload

静态注册

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>静态注册onload事件</title>
	<script type="text/javascript">
		function func(){
			alert("静态注册onload");
		}
	</script>
</head>
<!-- 
	静态注册onload事件
	onload 事件是浏览器解析完页面之后就会自动触发的事件
	 -->
<body onload="func()">

</body>
</html>

动态注册

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>动态注册onload事件</title>
	<script type="text/javascript">
		/*
		动态注册事件:是指先通过 js 代码得到标签的 dom对象,然后再通过 dom对象.事件名 = function(){} 这种形式赋于事件响应后的代码,叫动态注册。
		
		动态注册基本步骤:
			1、获取标签对象
			2、标签对象.事件名 = fucntion(){}
		
		onload 加载完成事件: 页面加载完成之后,常用于做页面 js 代码初始化操作
		*/
		//动态注册onload事件
		window.onload = function(){
			alert("动态注册onload");
		}
	</script>
</head>
<body>

</body>
</html>

onclick

document是JavaScript语言提供的一个对象(文档)
document.getElementById():通过 id 属性获取标签对象

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>onclick事件</title>
	<script type="text/javascript">
		/*
		onclick 单击事件: 常用于按钮的点击响应操作。
		*/
		//静态注册onclick
		function func(){
			alert("静态注册onclick");
		}
		
		//动态注册onclick
		window.onload = function(){
			//1.获取标签对象
			/*
			document是JavaScript语言提供的一个对象(文档)
			getElementById 通过 id 属性获取标签对象
			*/
			var button02 = document.getElementById("button02");
			
			//2.通过标签对象.事件名 = function(){}
			button02.onclick = function(){
				alert("动态注册onclick");
			}
		}
	</script>
</head>
<body>
	<button onclick="func()">按钮1</button>
	<button id="button02">按钮2</button>
</body>
</html>

onblur

console是控制台对象,是由 JavaScript语言提供,专门用来向浏览器的控制器打印输出, 用于测试使用。
console.log():打印到控制台

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>onblur事件</title>
	<script type="text/javascript">
		/*
		onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。
		*/
		function func(){
			//console是控制台对象,是由 JavaScript语言提供,专门用来向浏览器的控制器打印输出, 用于测试使用
			//log()是打印的方法
			console.log("静态注册onblur");
		}
		
		//动态注册onblur
		window.onload = function(){
			//1.获取标签对象
			var pwd = document.getElementById("pwd");
			
			//2.通过标签对象.事件名 = function(){}
			pwd.onblur = function(){
				console.log("动态注册onblur");
			}
		}
	</script>
</head>
<body>
	<form>
		<table align="center">
			<tr>
				<td>用户名:</td>
				<td><input type="text" onblur="func()"></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" id="pwd"></td>
			</tr>
		</table>
	</form>
</body>
</html>

onchange

静态绑定

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>静态注册onchange事件</title>
	</head>
	<script type="text/javascript">
		/*
		onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作
		*/
		function func(){
			alert("静态注册onchange");
		}
	</script>
<body>
	<form>
		<table align="center">
			<tr>
				<td>国籍:</td>
				<td>
					<select onchange="func()">
						<option selected="selected">国籍</option>
						<option>中国</option>
						<option>美国</option>
						<option>日本</option>
					</select>
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

动态绑定

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>动态注册onchange事件</title>
	</head>
	<script type="text/javascript">
		/*
		onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作
		*/
		//动态注册
		window.onload = function(){
			//1.获取标签对象
			var select = document.getElementById("select");
			
			//2.通过标签对象.事件名 = function(){}
			select.onchange = function(){
				alert("动态注册onchange");
			}
		}
	</script>
<body>
	<form>
		<table align="center">
			<tr>
				<td>国籍:</td>
				<td>
					<select id="select">
						<option selected="selected">国籍</option>
						<option>中国</option>
						<option>美国</option>
						<option>日本</option>
					</select>
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

onsubmit

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>onsubmit事件</title>
	<script type="text/javascript">
		/*
		onsubmit 表单提交事件: 常用于表单提交前,验证所有表单项是否合法。
		*/
		//要验证所有表单项是否合法,如果有一个不合法就要阻止表单提交
		function func(){
			alert("静态注册onsubmit,发现不合法表单项!");
			return false;
		}
		
		//动态注册
		window.onload = function(){
			//1.获取标签对象
			var form02 = document.getElementById("form02");

			//2.通过标签对象.事件名 = function(){}
			form02.onsubmit = function(){
				alert("动态注册onsubmit,发现不合法表单项!");
				return false;
			}
		}
	</script>
</head>
<body>
	<!--return false 可以阻止 表单提交 -->
	<form action="https://www.baidu.com" method="get" onsubmit="return func()">
		<input type="submit" value="静态注册">
	</form>
	<form action="https://www.baidu.com" method="get" id="form02">
		<input type="submit" value="动态注册">
	</form>
</body>
</html>

DOM对象

DOM,Document Object Model,文档对象模型

Document对象:

  • 管理了所有HTML文档内容。
  • 是一种树型结构的文档,有层级关系。
  • 把所有的标签都对象化
  • 可以通过document访问所有的标签对象。
    在这里插入图片描述
    注意:上述方法必须要在页面加载完成之后(onload内)使用

getElementById()

代码1:点击校验按钮,弹出窗口提示用户名是否合法

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>getElementById_1</title>
	<script type="text/javascript">
		/*
		需求:
			用户输入用户名,点击校验按钮之后,获取输入内容,判断是否合法
			用户名只能由字母、数字、下划线组成,长度为5-12位
			
			document.getElementById(elementId)
			通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
			document.getElementsByName(elementName)
			通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
			document.getElementsByTagName(tagname)
			通过标签名查找标签 dom 对象。tagname 是标签名
			document.createElement(tagName)
		*/
		//为校验按钮绑定onclick事件
		window.onload = function(){
			var but01 = document.getElementById("but01");
			but01.onclick = function(){
				//获取input标签内容,首先要获取input标签对象
				var in01 = document.getElementById("input01");
				//获取输入框内的内容(动态获取)
				var userName = in01.value;
				var regex = /^\w{5,12}$/;
				/*
				*test()方法用于测试某个字符串,是否与匹配规则 ,
				* 匹配则返回 true,不匹配则返回 false.
				*/
				if(regex.test(userName)){
					alert("用户名合法");
				} else {
					alert("用户名不合法");
				}
			}
		}
	</script>
</head>
<body>
	用户名:<input type="text" id="input01" value="请输入用户名">
	<button id="but01">校验</button>
</body>
</html>

代码2:点击校验按钮,在用户名输入框右侧显示 √ 或 ×
dom对象.innerHTML:获取起始标签和结束标签之间的内容
dom对象.value:动态获取标签的value值(新输入的值覆盖默认的值)

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>getElementById_2</title>
	<script type="text/javascript">
		/*
		第二种校验方式
		
		document.getElementById(elementId)
		通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
		document.getElementsByName(elementName)
		通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
		document.getElementsByTagName(tagname)
		通过标签名查找标签 dom 对象。tagname 是标签名
		document.createElement(tagName)
		*/
		window.onload = function(){
			//获取input、span、button标签对象
			var input01 = document.getElementById("input01");
			var span01 = document.getElementById("span01");
			var button01 = document.getElementById("but01");
			//为button标签注册onclick事件
			button01.onclick = function(){
				var regx = /^\w{5,12}$/;
				var flag = regx.test(input01.value);
				/*
				if(flag){
					//innerHTML获取起始标签和结束标签之间的内容
					checkName.innerHTML = "用户名合法";
				} else {
					checkName.innerHTML = "用户名不合法";
				}
				*/
				if(flag){
					//innerHTML获取起始标签和结束标签之间的内容
					span01.innerHTML = "<img src=\"right.png\" width=\"20\" height=\"20\">";
				} else {
					span01.innerHTML = "<img src=\"wrong.png\" width=\"20\" height=\"20\">";
				}
			}
		}
	</script>
</head>
<body>
	用户名:<input type="text" id="input01" value="请输入用户名">
	<span style="color: red;" id="span01"></span>
	<button id="but01">校验</button>
</body>
</html>

代码3:去除校验按钮,当输入框失去焦点后就显示 √ 或 ×

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>getElementById_2</title>
	<script type="text/javascript">
		/*
		第二种校验方式
		
		document.getElementById(elementId)
		通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
		document.getElementsByName(elementName)
		通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
		document.getElementsByTagName(tagname)
		通过标签名查找标签 dom 对象。tagname 是标签名
		document.createElement(tagName)
		*/
		window.onload = function(){
			//获取input、span、button标签对象
			var input01 = document.getElementById("input01");
			var span01 = document.getElementById("span01");
			//为input标签注册onblur事件
			input01.onblur = function(){
				var regx = /^\w{5,12}$/;
				var flag = regx.test(input01.value);
				if(flag){
					//innerHTML获取起始标签和结束标签之间的内容
					span01.innerHTML = "<img src=\"right.png\" width=\"20\" height=\"20\">";
				} else {
					span01.innerHTML = "<img src=\"wrong.png\" width=\"20\" height=\"20\">";
				}
			}
		}
	</script>
</head>
<body>
	用户名:<input type="text" id="input01" value="请输入用户名">
	<span style="color: red;" id="span01"></span>
</body>
</html>

getElementByName

实现全选、全不选和反选操作:
复选框dom对象的checked属性,表示复选框的选中状态,选中是true,不选中是false

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>getElementByName</title>
	<script type="text/javascript">
		/*
		getElementsByName()可以用来获取属于同一组的标签对象,
		当想同时对一组标签进行操作时,可以为这些标签设置同样的name属性,之后利用该方法获取所有标签对象
		*/
		window.onload = function(){
			//获取三个按钮对象,并绑定onclick事件
			var checkAll = document.getElementById("button01");
			var checkNone = document.getElementById("button02");
			var checkReverse = document.getElementById("button03");
			
			checkAll.onclick = function(){
				/*
				document.getElementsByName();是根据指定的name属性查询返回多个标签对象集合
				这个集合的操作跟数组一样,集合中每个元素都是dom对象,这个集合中的元素顺序是他们在html页面中从上到下的顺序
				*/
				var hobbies = document.getElementsByName("hobby");
				for(var i=0; i<hobbies.length; i++){
					/*
					checked 表示复选框的选中状态,选中是true,不选中是false
					*/
					hobbies[i].checked = true;
				}
			}
			
			checkNone.onclick = function(){
				var hobbies = document.getElementsByName("hobby");
				for(var i=0; i<hobbies.length; i++){
					hobbies[i].checked = false;
				}
			}
			
			checkReverse.onclick = function(){
				var hobbies = document.getElementsByName("hobby");
				for(var i=0; i<hobbies.length; i++){
					//hobbies[i].checked = !hobbies[i].checkes;
					var flag = hobbies[i].checked;
					if(flag){
						hobbies[i].checked = false;
					} else {
						hobbies[i].checked = true;
					}
				}
			}
		}
	</script>
</head>
<body>
	兴趣爱好:
	<input type="checkbox" name="hobby" value="java">java
	<input type="checkbox" name="hobby" value="python">python
	<input type="checkbox" name="hobby" value="C++">C++
	<input type="checkbox" name="hobby" value="C">C
	<br>
	<button id="button01">全选</button>
	<button id="button02">全不选</button>
	<button id="button03">反选</button>
</body>
</html>

getElementByTagName

演示全选操作:

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>getElementsByTagName</title>
	<script type="text/javascript">
		/*
		getElementsByTagName()可以用来获取属于同一组的标签对象,
		当想同时对一组标签进行操作时,但没有对标签进行id和name属性的赋值,若这些标签是相同类型的标签,可以利用该方法获取所有标签对象
		*/
		window.onload = function(){
			//获取按钮对象,并绑定onclick事件
			var checkAll = document.getElementById("button01");
			
			checkAll.onclick = function(){
				/*
				document.getElementsByTagName();返回多个相同类型标签对象的集合
				这个集合的操作跟数组一样,集合中每个元素都是dom对象,这个集合中的元素顺序是他们在html页面中从上到下的顺序
				*/
				var inputs = document.getElementsByTagName("input");
				for(var i=0; i<inputs.length; i++){
					/*
					checked 表示复选框的选中状态,选中是true,不选中是false
					*/
					inputs[i].checked = true;
				}
			}	
		}
	</script>
</head>
<body>
	兴趣爱好:
	<input type="checkbox" value="java">java
	<input type="checkbox" value="python">python
	<input type="checkbox" value="C++">C++
	<input type="checkbox" value="C">C
	<br>
	<button id="button01">全选</button>
</body>
</html>

dom对象的属性

dom对象.appendChild( oChildNode ):为当前标签添加一个子标签,oChildNode 是要添加的孩子标签
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom查询</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">
	window.onload = function(){
		//1.查找#bj节点
		document.getElementById("btn01").onclick = function(){
			var bj = document.getElementById("bj");
			alert(bj.innerHTML);
		}
		//2.查找所有li节点
		var btn02Ele = document.getElementById("btn02");
		btn02Ele.onclick = function(){
			var lis = document.getElementsByTagName("li");
			alert(lis.length);
		};
		//3.查找name=gender的所有节点
		var btn03Ele = document.getElementById("btn03");
		btn03Ele.onclick = function(){
			var genders = document.getElementsByName("gender");
			alert(genders.length);
		};
		//4.查找#city下所有li节点
		var btn04Ele = document.getElementById("btn04");
		btn04Ele.onclick = function(){
			//1.获取id为city的节点
			var city = document.getElementById("city");
			//2.获取city下name=li的所有节点
			var lis = city.getElementsByTagName("li");
			alert(lis.length);
		};
		//5.返回#city的所有子节点
		var btn05Ele = document.getElementById("btn05");
		btn05Ele.onclick = function(){
			//1.获取id为city的节点
			var city = document.getElementById("city");
			//2.获取city的所有节点
			alert(city.childNodes.length);//9空白字符也算子节点
		};
		//6.返回#phone的第一个子节点
		var btn06Ele = document.getElementById("btn06");
		btn06Ele.onclick = function(){
			alert(document.getElementById("phone").firstChild.innerHTML);
		};
		//7.返回#bj的父节点
		var btn07Ele = document.getElementById("btn07");
		btn07Ele.onclick = function(){
			alert(document.getElementById("bj").parentNode.innerHTML);
		};
		//8.返回#android的前一个兄弟节点
		var btn08Ele = document.getElementById("btn08");
		btn08Ele.onclick = function(){
			var android = document.getElementById("android");
			var preNode = android.previousSibling;
			alert(preNode.innerHTML);
		};
		//9.读取#username的value属性值
		var btn09Ele = document.getElementById("btn09");
		btn09Ele.onclick = function(){
			var value = document.getElementById("username").value;
			alert(value);
		};
		//10.设置#username的value属性值
		var btn10Ele = document.getElementById("btn10");
		btn10Ele.onclick = function(){
			document.getElementById("username").value = "12345";
		};
		//11.返回#city的文本值
		var btn11Ele = document.getElementById("btn11");
		btn11Ele.onclick = function(){
			alert(document.getElementById("city").innerHTML);//innerHTML获取所有内容
			alert(document.getElementById("city").innerText);//innerText只获取文本,不包括字符等
		};
	};
</script>
</head>
<body>
<div id="total">
	<div class="inner">
		<p>
			你喜欢哪个城市?
		</p>

		<ul id="city">
			<li id="bj">北京</li>
			<li>上海</li>
			<li>东京</li>
			<li>首尔</li>
		</ul>

		<br>
		<br>

		<p>
			你喜欢哪款单机游戏?
		</p>

		<ul id="game">
			<li id="rl">红警</li>
			<li>实况</li>
			<li>极品飞车</li>
			<li>魔兽</li>
		</ul>

		<br />
		<br />

		<p>
			你手机的操作系统是?
		</p>

		<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
	</div>

	<div class="inner">
		gender:
		<input type="radio" name="gender" value="male"/>
		Male
		<input type="radio" name="gender" value="female"/>
		Female
		<br>
		<br>
		name:
		<input type="text" name="name" id="username" value="abcde"/>
	</div>
</div>
<div id="btnList">
	<div><button id="btn01">查找#bj节点</button></div>
	<div><button id="btn02">查找所有li节点</button></div>
	<div><button id="btn03">查找name=gender的所有节点</button></div>
	<div><button id="btn04">查找#city下所有li节点</button></div>
	<div><button id="btn05">返回#city的所有子节点</button></div>
	<div><button id="btn06">返回#phone的第一个子节点</button></div>
	<div><button id="btn07">返回#bj的父节点</button></div>
	<div><button id="btn08">返回#android的前一个兄弟节点</button></div>
	<div><button id="btn09">返回#username的value属性值</button></div>
	<div><button id="btn10">设置#username的value属性值</button></div>
	<div><button id="btn11">返回#city的文本值</button></div>
</div>
</body>
</html>

正则表达式

注意:如果要精确匹配,必须要使用^和$包围

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>正则表达式</title>
	<script type="text/javascript">
		/*
		var patt = new RegExp(pattern, modifiers);
		var patt = /pattern/modifiers;
		
		modifiers = i/g/m
		i 忽略大小写。 
		g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 
		m 执行多行匹配。 
		
		注意与Java的区别,Java要求某位必须是某个字符,JS是只要整个字符串包含该字符即可
		Java中:System.out.println("123abc456".matches("[a-z]"));//false, 因为第一位不是字母
		JS中:alert(/[a-z]/.test("123abc456"));//true
		
		[abc] 查找方括号之间的任何字符。 
		[^abc] 查找任何不在方括号之间的字符。 
		[0-9] 判断是否包含数字 
		[a-z] 判断是否包含小写字母 
		[A-Z] 判断是否包含大写字母
		[A-z] 查找任何从大写 A到小写 z的字符。 
		[adgk] 查找给定集合内的任何字符。 
		[^adgk] 查找给定集合外的任何字符。 
		
		. 查找单个字符,除了换行和行结束符。 
		\w 查找单词字符。 
		\W 查找非单词字符。 
		\d 查找数字。 
		\D 查找非数字字符。 
		\s 查找空白字符。 
		\S 查找非空白字符。 
		\b 匹配单词边界。 
		\B 匹配非单词边界。 
		\0 查找 NULL 字符。 
		
		注意:描述方式是包含时,只检查最低规则,
		alert(/a?/.test("123aabc456"));//true, 因为包含0个a
		alert(/a{1,2}/.test("123aaabc456"));//true, 因为包含最少1个a
		若要严格执行规则,要加^和$
		alert(/^a?$/.test("123aabc456"));//false
		alert(/^a{1,2}$/.test("123aaabc456"));//false
		
		n+ 匹配任何包含至少一个n的字符串。 
		n* 匹配任何包含零个或多个n的字符串。 
		n? 匹配任何包含零个或一个n的字符串。 
		n{X} 匹配包含X个n的序列的字符串。 
		n{X,Y} 匹配包含X或Y个n的序列的字符串。
		n{X,} 匹配包含至少X个n的序列的字符串。 
		n$ 匹配任何结尾为n的字符串。 
		^n 匹配任何开头为n的字符串。 
		?=n 匹配任何其后紧接指定字符串n的字符串。 
		?!n 匹配任何其后没有紧接指定字符串n的字符串。 
		
		RegExp对象方法:
			compile 编译正则表达式。 
			exec 检索字符串中指定的值。返回找到的值,并确定其位置。
			test 检索字符串中指定的值。返回 true或false。 

		支持正则表达式的 String对象的方法:
			search 检索与正则表达式相匹配的值。
			match 找到一个或多个正则表达式的匹配。
			replace 替换与正则表达式匹配的子串。
			split 把字符串分割为字符串数组。 
		
		*/
		alert(/[a-z]/.test("123abc123"));//注意:Java中代表第一个字符必须是a-z,但JS中,只要字符串中包含a-z就返回true
		alert(/^a?$/.test("123aabc456"));//false
		alert(/^a{1,2}$/.test("123aaabc456"));//false
	</script>
</head>
<body>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值