学习java之路第二阶段第三周HTML续集

HTML

JS部分

Js事件编程的三要素:

1)事件源----html标签   点击按钮/图片点击等等
2)编写事件监听器---写一个函数
	a,b参数名称
	function 函数名称(形式参数不需要带var){
		完成的逻辑
	}
3)在1)中通过一些属性绑定这个函数	
	onclick="函数名()"

dom编程:文档对象模型编程

dom编程:(Document Object Model)浏览器js引擎在html页面的时候,将页面中的每一个标签解析"标签对象"(Element),形成一种树状结构---->document—代表整个html文档。

浏览器的js引擎解析浏览器html页面的时候,将html页面中所有的标签都解析为 “标签对象”,通过标签对象完成一些具体的操作;

  • 1)获取标签对象
    通过id属性值获取标签对象(最常用的,id必须唯一的)
  • 2)改变标签对象的属性

通过特有方式获取节点对象(元素对象)改变一些属性!
通用的document对象的方法获取标签对象
document.getElementById(“id属性值”) ;
document.getelementsByClass(“同名的class属性值”) ;
document.getElementsByTagName(“同名的标签名称”) ;
document,getElementsByName(“所有的同名的name”) ;

在这里插入图片描述



switch语句练习

需求:
在文本输入框中输入月份的值,点击查询按钮—弹框显示"对应的季节"
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季

<head>
<script>
		//点击查询按钮的函数 
		//事件监听器
		function  searchMonth(){
			//alert("点击按钮了") ;
			//1)获取文本输入框的内容
			
			//1.1)通过id属性值="month"获取 第一个input标签对象
			var inputObject = document.getElementById("month") ;
			//1.2)通过标签对象获取value属性
			var content = inputObject.value ;
			alert(typeof(content)) ;
			//alert(content) ;
			//if语句 :string类型自定转换number 然后后面进行比较
			/* if(content==3 || content==4 || content ==5){
				alert("春季") ;
			}else if(content == 6 || content ==7 || content==8){
				alert("夏季") ;
			}else if(content == 9 || content ==10 || content==11){
				alert("秋季") ;
			}else if(content == 12 || content ==1 || content==2){
				alert("冬季") ;
			}else{
				alert("非法数据") ;
			} */
			
			//必须类型转换
			content = parseInt(content) ;
			 alert(typeof(content)) ;
			switch(content){ //content--String字符串对象
				case 3:
				case 4:
				case 5:
					alert("春季") ;
					break ;
				case 6:
				case 7:
				case 8:
					alert("夏季") ;
					break ;
				case 9:
				case 10:
				case 11:
					alert("秋季") ;
					break ;	
				case 12:
				case 1:
				case 2:
					alert("冬季") ;
					break ;	
				default :
					alert("非法数据") ;
					break ;
			}
			
		}
</script>
</head>
<body>
<input type="text" id="month"  placeholder="请输入月份的值" /><input type="button" onclick="searchMonth()" value="点击查询" />
</body>

for-in语句练习

<script>
				//创建一个数组  Array---Javascrpt的内置对象
				//方式1: var 数组名称 = new Array() ;  //没有给定长度
				//方式2:var  数组名称  = new Array(size) ;//给定数组长度
				//前面两种格式:类似Java创建数组的动态初始化,给定数组长度
				
				//Array内置对象数组特点:  1)可以存储任意类型元素
				//2)可以不断的给数组中添加数据,不存在角标越界
				
				
				
				//方式3: var 数组名称 = new Array()[元素1,元素2,.....] ;
				//静态初始化---简写为 var 数组名称  = [元素1,元素2,.....] ;
				
				/* var arr = new Array() ; //没有给定长度
				alert(arr.length) ;
				arr[0] = "hello" ;
				arr[1] = 10 ;
				arr[2] = true ;
				arr[3] = 'A' ;
				alert(arr.length) ; */
				
				/* var arr = new Array(3) ; 
				alert(arr.length) ;
				arr[0] = "hello" ;
				arr[1] = "world" ;
				arr[2] = "JavaEE" ;
				arr[3] = "Servlet" ;
				alert(arr.length) ;
				 */
				
				//方式3:创建数组 静态初始化 简写格式  [元素1,元素2,...]
				var arr = [10,5,20,35,69] ;
				alert(arr.length) ;
				
				//遍历: 普通for
				for(var i = 0 ; i < arr.length;i++){
					document.write(arr[i]+"<br/>") ;
				}
				document.write("<hr/>") ;
				/**
				 * for(var 变量名 in 数组对象或者对象名称){
						使用这个变量名
						
					}
				 */
				for(var x in arr){
					document.write(arr[x]+"&ensp;&ensp;") ;
				}
				
				document.write("<hr/>") ;
				
				//Array内置对象提供很多功能
				//join(str):通过指定的分割符号将数组的元素拼接成字符串
				//reverse():将数组的元素反转....
				var arrArray = ["Java","Python","C++","Php","Go"] ;
				//var str = arrArray.join("-") ;
				//document.write(str) ;
				for(var i = 0 ; i < arrArray.length ; i ++){
					document.write(arrArray[i]+"&ensp;&ensp;") ;
				}
				document.write("<hr/>") ;
				arrArray  = arrArray.reverse() ;
				for(var i in arrArray){
					document.write(arrArray[i]+"&ensp;&ensp;");
				}
		 </script>

Js中的函数定义以及调用

函数定义:
				function  函数名称(参数名称列表或空参){
					完成的方法体的逻辑
						情况1)----直接输出
						情况2)---return 直接返回数据 ;
				}
  • 情况1的调用:
    单独调用 :函数名称(实际参数列表) ;
  • 情况2的调用:
    赋值调用
    var 结果变量 = 函数名称(实际参数列表) ;

注意事项:

  • 1)定义函数的时候,函数中参数列表不能带var,和Java不一样(Javascript弱类型语言)
    public static int add(int a,int b){}
  • 2)Javascript定义函数function 函数名称(参数列表){},不需要返回类型
    但是方法体中是可以使用return语句的
  • 3)javascript 不存在函数重载的概念,函数名称相同,后面的函数将前面的函数覆盖!
  • 4)js的函数中存在默认数组arguments,将实际参数赋值给形式参数!

定义一个函数:两个数据求和
//function add(var a,var b){
/* function add( a, b){
var result = a +b ;
console.log(a+b) ;
document.write(a+b) ; //给浏览器写数据
} */
//调用
//add(10,20) ;

<script>
function add(a,b,c){
					//js的函数里面隐藏了数组名称 :arguments ,将实际参数赋值给形式参数
					for(var i = 0 ; i < arguments.length;i++){
						document.write(arguments[i]+"&ensp;&ensp;<br/>") ;
					}
					
					return a+b+c ;
				}
				/* function add(a,b){
					var c = a+b;
					return c ;
				} */
				
				//调用时候
				//var result  = add(10,15) ;  //实际参数列表 个数< 形式参数个数   --->结果NAN  没有值
				var result  = add(10,15,20) ; //实际参数列表格式 > 形式参数个数	--->将前面的值进行操作,后面多余的操作不参与
				document.write(result) ;
				console.log(result) ;
</script>

String内置对象涉及的功能

<script>
				//创建一个字符串对象
				//var 字符串名称 = new String(val) ;
				var s1 = new String("hello") ;
				var s2 = new String("hello") ;
				document.write((s1==s2)+"<br/>") ;
				//js相比较两个对象的内容是否相同,String对象---valueOf():比较两个字符串对象的原始值是否相同
				document.write(((s1.valueOf())==(s2.valueOf()))+"<br/>") ;
				
				document.write("<hr/>") ;
				
				//一般创建字符串:跟Java语言一样,直接常量赋值
				var str = "helloJavaEE" ;
				//String内置对象的常用功能
				//charAt(index)返回指定索引位置处的字符
				document.write(str.charAt(4)+"<br/>") ;
				//concat(str):拼接功能
				document.write(str.concat("world")+"<br/>") ;
				//fontcolor("颜色名称"):给字符串标记颜色
				document.write(str.fontcolor("darkorange")+"<br/>") ;
				//fontsize(整数), 给字体设置大小
				//<font size="25"></font>
				document.write(str.fontsize(25)+"<br/>") ;
				//substring(start, end):截取功能
				document.write(str.substring(0,5)+"<br/>") ;
				 
				//创建一个字符串
				/* var str2 = "Java-Python-PhP-Go" i;
				//split(字符串):通过分隔符的字符串将字符串拆分成字符串数组
				var strArray = str2.split("-") ;
				for(var i in strArray){
					document.write(strArray[i]+"&ensp;&ensp;") ;
				} */
				
 		</script>

在这里插入图片描述

Date日期内置对象

<script>
			//创建日期对象
			var date = new Date() ;
			//document.write(date) ;
			//Date提供一些功能:
			//获取年份 getYear()获取的当前年份和1900之间的差值
			//document.write(date.getYear()+"年") ;
			//getFullYear();
			document.write(date.getFullYear()+"年") ;
			//获取年中的月份
			//getMonth():返回0-11之间的整数
			document.write((date.getMonth()+1) +"月") ;
			//月份中的日期值 
			//getDate() 
			document.write(date.getDate()+"日&ensp;") ;
			//getHours()小时  getMinutes()分钟  getSeconds()秒数
			document.write(date.getHours()+":"+date.getMinutes()+":"+date.getSeconds())
			
		</script>

网页定时器以及使用

定时器有两种

  • window.setInterval(定时任务就是一个函数, iMilliSeconds )
    每经过iMilliSeconds毫秒后重复执行这个任务函数

  • window.setTimeout(定时任务就是一个函数, iMilliSeconds)
    经过iMilliSeconds毫秒后执行一次任务函数!

      任何标签都有两个属性
      给标签设置文本
      	innerText:普通文本
      	innerHTML:html文本   <h3>文本内容</h3>
    

网页定时器setTimeout()和setInterval()的区别
window对象:浏览器窗口的顶级对象,调用它里面的方法 window可以不写
timerId1= setTimeout(“任务函数()”,时间毫秒值) //经过这个时间毫秒值后执行一次任务
timerId2= setInterval(“任务函数()”,时间毫秒值) //每经过这个时间毫秒值后重复执行这个任务!

关闭定时器
window对象的的方法
clearTimeout(timerId1) ;
clearInterval(timerId2) ;

动态给标签设置文本

  • 1)需要获取当前标签对象 通过id属性值获取标签对象
    var 标签对象名称= document.getElementById(“id属性值”) ;
  • 2)使用标签对象名称 访问属性
    innerText
    innerHTML

定时器1的应用


<body>
		当前系统时间是:<span id="spanTip"></span> 
</body>
<script>
		function genDate(){
			//完成网页时钟:
			//1)需要创建js的日期对象
			var date = new Date() ;
			//2)拼接日期+时间的字符串
			var dateStr = date.getFullYear()+"-"+(date.getMonth()+1)+"-"
			+date.getDate()+"&ensp;&ensp;"+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds() ;
			
			
			//3)将日期+时间的字符串 动态设置到span标签体中
			//3.1)获取id="spanTip"标签对象
			var spanObj = document.getElementById("spanTip") ;
			//3.2)设置它的文本内容
			spanObj.innerHTML = "<h3>"+dateStr+"</h3>" ;
		}
		
		
		//4)需要有定时器---每秒(1000毫秒)都执行
		//window.setInterval(定时任务就是一个函数, iMilliSeconds )
		setInterval("genDate()",1000) ; //每1秒中都需要执行这个函数
		
					
</script>

定时器2的应用

<script>
var taskId ;
	//1)点击按钮----触发单击点击事件 
	function myClick(){
		
		//3秒后执行一次任务
		//window.setTimeout("OpenHref()",3000) ;
		taskId = window.setInterval("OpenHref()",3000) ;
		//alert("触发点击了") 
		
	}
	function clearMyClick(){
		window.clearInterval(taskId) ;
	}

	function OpenHref(){
		//open方法:参数1:打开地址 参数2:打开地址的方式
		window.open("06_Date日期对象.html","_blank") ;
	} 
	


	//2)弹框----window.open("url地址") ;
	
	
	
	//定时器
	//window.setTimeout() ;
</script>

<body>
		<input type="button" onclick="myClick()" value="点击"/>
		<input type="button" onclick="clearMyClick()" value="清除定时器"/>
	</body>

Js常见事件的分类

  1. 点击事件
    onclick–绑定单击事件
    ondblclick–绑定双击事件
  2. onfocus–获取焦点(文本输入框,点击进去输入内容)
    onblur–失去焦点
  3. 下拉菜单选项卡发生变化的事件onchange事件
  4. 鼠标移出/鼠标经过:onmouseout/onmouseover事件
  5. 页面载入事件onload
<script>

		//通过id="bodyNode"获取body标签对象
		var bodyNode = document.getElementById("bodyNode") ;
		bodyNode.onload = function(){ //匿名函数
			alert("触发了页面载入事件,body内容加载完毕了");
			
			
			
		}
/* 
	function myInit(){ //有名字的函数 myInit
		
		alert("页面载入事件触发,body内容已经全部加载完毕!") ;
	} */
	
	
	function testMouserOut(){
		alert("触发鼠标移出事件") ;
	}
	
	function testMouseOver(){
		//alert("触发鼠标经过事件;") ;
		//Js的bom:基于浏览器对象模型编程
		//window对象下面有个子对象 location地址栏--href
		//location.href [ = sURL ]
		location.href="adv广告页面.html" ;
	}


	//测试下列选项卡的变化触发onchange事件
	function testChange(){
		//alert("选项发送变化!") ;
		//在这个函数中获取选项中value值
		//通过id="province"获取select标签对象,同时获取到里面的value属性
		var province = document.getElementById("province").value ;
		//alert(province) ;
		//通过id="city"获取它的下拉菜单标签对象
		var selectSecond = document.getElementById("city") ;

		//当选项卡的内容变化,将上一次城市的内容清除掉
		selectSecond.innerHTML ="" ;
		//判断province值
		if("陕西省"==province){
			//选中了陕西省
			//定义一个陕西省所在城市的数组
			var arr = ["西安市","咸阳市","宝鸡市","渭南市","神木市"] ;
			//遍历数组获取到每一个城市
			for(var i = 0 ; i < arr.length ; i ++){
				//给上面的第二个下拉菜单标签对象追加这个option标签
				selectSecond.innerHTML += "<option value='"+arr[i]+"'>"+arr[i]+"</option>" ;
			}
		}
		if("山西省"==province){
			//选中了陕西省
			//定义一个陕西省所在城市的数组
			var arr = ["太原市","晋中市","运城市","大同市","临汾市"] ;
			//遍历数组获取到每一个城市
			for(var i = 0 ; i < arr.length ; i ++){
				//给上面的第二个下拉菜单标签对象追加这个option标签
				selectSecond.innerHTML += "<option value='"+arr[i]+"'>"+arr[i]+"</option>" ;
			}
		}
		
		if("广东省"==province){
			//选中了陕西省
			//定义一个陕西省所在城市的数组
			var arr = ["东莞市","佛山市","深圳市","珠海市","广州市"] ;
			//遍历数组获取到每一个城市
			for(var i = 0 ; i < arr.length ; i ++){
				//给上面的第二个下拉菜单标签对象追加这个option标签
				selectSecond.innerHTML += "<option value='"+arr[i]+"'>"+arr[i]+"</option>" ;
			}
		}
		
	}

	//测试失去焦点
	function testBlur(){
		//获取文本输入框的内容
		//通过标签对象获取value属性---默认值
		var usrename = document.getElementById("username").value ;
		
		//获取id="tip"的span标签对象
		var spanObj = document.getElementById("tip") ;
		//模拟数据:如果这个username内容不是高圆圆,提示"格式错误",否则,恭喜"可用"
		if(usrename !="高圆圆"){
			spanObj.innerHTML = "用户名格式有误".fontcolor("red") ;
		}else{
			spanObj.innerHTML = "恭喜您,可用".fontcolor("greenyellow") ;
		}
	}

	//测试获取焦点事件
	function testFocus(){
		//通过id="username"获取它的input标签对象
		var username = document.getElementById("username") ;
		//清空掉它的value属性
		username.value ="" ;
	}

	//测试单击
	function  testMyclick(){
		alert("点我试试") ;
	}
	//双击
	function testMyDblClick(){
		alert("点两下" ) ;
	}
	
	
</script>

在这里插入图片描述

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

Js自定义对象的方式

方式1:类似Java中有参构造方法 
定义一个对象-- 和定义函数的格式相同
function 对象(形式列表){
				 		//追加属性
						this.属性名1 = 参数名1;
						this.属性2= 参数名2;
						//追加功能
						this.方法名 = function(){
							逻辑...
						}
				 
					}
			 创建对象
			 var  对象名  = new  对象(实际参数列表) ;
//定义一个学生对象,name,age,gender三个属性
	function Student(name,age,gender){
				//追加属性名
				this.name = name ;  
				this.age = age ;
				this.gender  = gender ;
				//追加功能
				this.sperkEng=function(languageName){
					alert("会讲"+languageName) ;
				}
			}	
			
//创建一个学生对象
var student  = new Student("孙二娘",44,"女") ;
方式2:类似Java中无参构造方法
	定义对象
	function  对象(){
			 
				}
				创建对象
						var 对象名 = new 对象() ;
						//追加属性
						对象名.属性名=  值
						//追加功能
						对象名.方法名 = function(){
							...
						}
//定义学生对象
function Student(){
				
} 
//创建对象
var s = new Student() ;
//追加属性
s.name = "张青" ;
s.age = 35 ;
s.gender = "男" ;
//追加方法
s.speak=function(name){
alert("会说"+name) ;
} 
方式3: 利用Object 对象,所有js对象的模板!
//直接创建对象
var s = new Object() ;
//追加属性
s.name = "扈三娘" ;
s.age  =32 ;
s.gender="女" ;
//追加功能
s.speak=function(lname){
alert("会说"+lname) ;
}
方式4:字面值的方式  利用json字符串
{"key":"value"}
最常用的一种格式
普通字符串 
var json对象 = {"key1":"value1","key2":"value2",....} ;
var s = {
"name":"王英",
"age" :23 ,
"gender":"男",
"address":"清风山" ,
"speak":function(lname){
alert("会讲"+lname)
}
};
*var json对象 =[
			 {"key1":"value1","key2":"value2"...},
			 {"key1":"value1","key2":"value2"...},
			 {"key1":"value1","key2":"value2"...}
		 ];
		 
		 
		 var json对象= {
			 
				"key":"[
					
						{},{},{}
				]"
		 }
var students = [
				{"name":"顾大嫂","age":44,"gender":"女","address":"登州"},
				{"name":"武松","age":35,"gender":"男","address":"清河县"},
				{"name":"潘金莲","age":32,"gender":"女","address":"武大郎家"},
			];
			document.write("年龄是:"+students[0].age);
			document.write("-姓名是:"+students[1].name) ;
			document.write("-地址是:"+students[2].address) ;

需求:
定一个对象 ArrayTool
追加两个方法 max(array),获取数组中的最大值
search(array,target):
在已知的数组中,查询target指定元素的角标值

//定义一个对象
function ArrayTool(){
	
	//追加方法max
	this.max = function(array){
		//获取数组的最大值的逻辑
		//定义一个参照物
		var max = array[0] ;
		//遍历数组
		for(var x  = 1 ; x < array.length; x++){
			if(array[x]>max){
				max = array[x] ;
			}
		}
		return max ;
	}
	
	this.search = function(array,target){
		//查询数组中指定的target元素的角标
		var index = -1 ;
		//遍历数组
		for(var x = 0; x< array.length; x++){
			//如果这个元素就是target,将index修改了
			if(target == array[x]){
				index = x ;
			}
		}
		return index ;
	}
}
<script src="js/ArrayTool.js"></script>
		 <script>
			//有一个数组
			var arr = [25,69,77,67,13] ;
			//创建ArrayTool对象
			var at = new ArrayTool() ;
			 var max = at.max(arr) ;
			 document.write("最大值是:"+max+"<br/>") ;
			var index = at.search(arr,670) ;
			document.write("index:"+index+"<br/>") ;
			
		 </script>

在这里插入图片描述



document对象的方法获取标签对象

<body>
		用户名:<input type="text"
		 id="username" onblur="getUsername()" name="name" class="user" placeholder="请输入用户名" />
	</body>


<script>
			//当前鼠标点击到文本输入框输入内容,失去焦点,
			//弹一个提示框"用户名内容"
			function getUsername(){
				//document对象的方法获取标签对象
				//1)getElementById("id属性值"),获取指定标签对象
				var inputObj =document.getElementById("username") ;
				
				
				//通过节点关系获取标签对象---js内置对象属性 parentNode
				/* var bodyNode = inputObj.parentNode ;
				alert(bodyNode.nodeName) ;//获取节点名称 nodeName
				var childs = bodyNode.childNodes ; //所有的子节点  
				for(var i= 0 ; i <childs.length ; i ++){
					document.write(childs[i].nodeName+"<br/>") ; 
				} */
				
				
				//2)var 标签对象列表 =doucment.getElementsByClassName("页面中所有的同名的class属性值)
				//var inputObj = document.getElementsByClassName("user")[0] ;
				
				//3)通过标签名称获取标签对象--标签对象列表
				//document.getElementsByTagName("标签名称") ;
				//var inputObj = document.getElementsByTagName("input")[0] ;
				
				//4)通过name属性值获取标签对象--标签对象列表
				//document.getElementsByName("所有 同名的name属性值") ;
				//var inputObj = document.getElementsByName("name")[0] ;
				alert(inputObj.value) ;
			}
	</script>

Js常用正则表达式语法

请添加图片描述

X代表任意字符

  1. 数量词相关的
    • X+:表示X字符出现一次或者多次 等价于{1,} 至少出现一次
    • X*:表示X字符零次或多次 等价于{0,}。至少出现0次
    • X?:表示X字符出现0次或者1次,等价于{0,1}:至少出现0次,不超过1次
  2. 范围:
    • X{n}: 表示X字符恰好出现n次
    • X{n,}:表示X字符串至少出现n次 等价于X+
    • X{n,m}:表示X字符串至少n次,但是不超过m次
  3. 其他语法:
    • \d— 等价于[0-9]匹配纯数字
    • \w-- 等价于[A-Za-z0-9_]:匹配带有下划线的任何单词字符
    • 邮箱里面–本身包含字符 .---->必须转义 .

正则表达式如何使用?

  1. 创建正则表达式对象
    var 对象名 = /正则语法/ ; – 不推荐 “不完全匹配”
    推荐
    var 对象名= /^ 正则语法 $/ ;
    边界匹配符号:
    ^:以…开头
    $:以…结尾

  2. var flag = 通过正则表达式对象名.test(输入的字符串)
    flag–true,成功
    false,匹配失败

<script>
//字符串值
var str ="abcd12efg" ;
//创建一个正则表达式对象
var reg = /^[0-9]{2}$/ ; //完全匹配 才能通过
if(reg.test(str)){
	alert("条件成立!") ;
}else{
	alert("条件不成立!") ;
}
</script>

练习

  1. js正则表达式 使用
  2. dom操作—获取标签对象—获取用户信息
  3. js事件编程
 <style>
				#formDiv{
					border: 1px solid #000;
					width:450px;
					height: 300px;
					margin-left: 350px;
					margin-top: 150px;
				}
				#userDiv{
					margin: 20px 0 0 70px;
				}
				#pwdDiv{
					margin: 20px 0 0 70px;
				}
				#rePwdDiv{
					margin: 20px 0 0 70px;
				}
				#emailDiv{
					margin: 20px 0 0 70px;
				}
				#btnDiv{
					margin: 20px 0 0 180px;
				}
		 </style>
		 
	</head>
	<body>
		<div id="formDiv">
			
			
			<!-- 
			 
			表单是否能够提交取决onsubmit事件 的返回结果:true---提交表单
			否则false,不能提交表单(有一些表单项通不了正则)
			 -->
		
			<form action="server.html" method="get" onsubmit="return checkAll()">
				<div id="userDiv">
					用户&ensp;&ensp;:<input type="text"
					 placeholder="请输入用户名" onblur="checkUserName()" id="username" /><span id="userTip"></span>
				</div>
				<div id="pwdDiv">&ensp;&ensp;&ensp;&ensp;:<input type="password" 
					placeholder="请输入密码" id="pwd" onblur="checkPwd()" /><span id="pwdTip"></span>
				</div>
				<div id="rePwdDiv">
					确认密码:<input type="password" 
					placeholder="两次密码输入信息一致" id="repwd" onblur="checkRePassword()" /><span id="repwdTip"></span>
				</div>
				<div id="emailDiv">&ensp;&ensp;&ensp;&ensp;:<input type="text"
					 placeholder="请输入 邮箱" id="email" onblur="checkEmail()" /><span id="emailTip"></span>
				</div>
				<div id="btnDiv">
					<input type="submit" value="注册" />
				</div>
				
			</form>
		</div>
	</body>
</html>

<script>
		/**
		 * 正则规则;
		 * 		用户名:5-14位的数字或者字母组成
		 * 		密码:6-10位的数子或者字母组成
		 * 		确认密码:和密码一致
		 * 		邮箱:满足基本邮箱格式
		 * 				919081924@qq(163/126).com
		 * 					企业邮箱:
		 * 						企业名字@部门名字.com.cn....
		 * 
		 * 
		 */
		function checkAll(){
			
			//将表单中表单项都需要校验
			if(checkUserName() && checkPwd() 
			&& checkRePassword() && checkEmail()){
				return true ;
			}else{
				return false ;
			}
		}
		
		
		//校验用户名的函数
		function checkUserName(){
			//获取id="username"它所在的input标签对象,同时获取输入的内容
			var username = document.getElementById("username").value ;
			//alert(username) ;
			//获取id="userTip"的span标签对象
			var spanObj = document.getElementById("userTip") ;
			//定义正则规则:
			//5-14位的数字或者字母组成
			var reg = /^[A-Za-z0-9_]{5,14}$/;
			if(reg.test(username)){
				//成立
				spanObj.innerHTML = "恭喜您可用".fontcolor("green") ;
				return true ;
			}else{
				//失败
				spanObj.innerHTML = "对不起,格式有误".fontcolor("red") ;
				return false ;
			}
			
		}
		
		//校验密码
		function checkPwd(){
			//获取id="pwd" 的input标签对象,同时密码的内容
			var pwd = document.getElementById("pwd").value ;
			//获取 id="pwdTip"的span标签对象
			var spanObj = document.getElementById("pwdTip");
			//密码的正则规则:
			//6-10位的数子或者字母组成
			var reg = /^[A-Za-z0-9_]{6,10}$/ ;
			if(reg.test(pwd)){
				//成功
				spanObj.innerHTML = "密码格式正确".fontcolor("green") ;
				return true ;
			}else{
				spanObj.innerHTML="密码格式有误".fontcolor("red") ;
				return false ;
			}
			
		}
		
		//确认密码
		function checkRePassword(){
			//获取id="pwd" 的input标签对象,同时密码的内容
			var pwd = document.getElementById("pwd").value ;
			//获取id="repwd"的input标签对象,同时确认密码框的内容
			var repwd = document.getElementById("repwd").value ;
			
			//获取id="repwdTip"的span标签对象
			var spanObj = document.getElementById("repwdTip") ;
			if(repwd == pwd){
				spanObj.innerHTML ="两次密码一致".fontcolor("green") ;
				return true ;
			}else{
				spanObj.innerHTML ="两次密码不一致".fontcolor("red") ;
				return  false ;
			}
		}
		
		//校验邮箱
		function checkEmail(){
			//获取id="email"的input标签对象.同时获取邮箱内容
			var email = document.getElementById("email").value ;
			//获取id="emailTip"的span标签对象
			var spanObj = document.getElementById("emailTip") ;
			//邮箱正则
			/**
			 * 919081924@qq(163/126).com
			 * zhangsan@163.com..
			 * xxxx@126.com
		 * 					企业邮箱:
		 * 						企业名字@部门名字.com.cn....
			 */
			var reg = /^[A-Za-z0-9_]+@[A-Za-z0-9]+(\.[a-z]{2,3}){1,2}$/ ;
			//匹配
			if(reg.test(email)){
				//成立
				spanObj.innerHTML="邮箱格式正确".fontcolor("green") ;
				return true ;
			}else{
				spanObj.innerHTML="邮箱格式有误".fontcolor("red") ;
				return false ;
			}
		}
</script>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用内容,一个Java学习计划可以按照以下阶段进行安排: 第一阶段是学习Java基础知识,包括语法、面向对象编程等。可以通过书籍或在线视频进行学习第二阶段学习JavaWeb,主要包括MySQL、HTML、CSS、JS、Tomcat、Servlet、Filter、Listener等内容。可以通过B站上的JavaWeb视频进行学习,并且可以尝试自己动手写一个JavaWeb项目或接一些外包项目来巩固所学知识。 第三阶段是学习Java框架,可以选择观看B站高淇老师的Java300集视频或阅读《Java核心技术卷Ⅰ》这本书来学习。在这个阶段,还可以重点学习集合、多线程和JVM等内容,因为在面试中经常会被问到。 最后,还可以学习容量规划和性能调优知识,熟练使用监控报警系统,并推荐阅读《深入理解Java虚拟机》这本书。此外,设计模式也是一个重要的知识点,可以从项目中学习,并有时间的话可以阅读《深入浅出设计模式》和《JDK里的设计模式》。 综上所述,一个Java学习计划可以按照基础知识、JavaWeb、Java框架、容量规划和性能调优、设计模式等阶段进行安排。 #### 引用[.reference_title] - *1* *2* [【2022Java学习计划】值得收藏的学习计划](https://blog.csdn.net/HeZhiYing_/article/details/124864208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java学习计划](https://blog.csdn.net/nice_meng/article/details/86699361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱学Java的小宇宙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值