JavaScript保姆级教程


一、JavaScript是什么?

一个页面由html css js 组成的!!!

js:相当重要!!!。如果想要学号前端,那些html,css根本没有技术含量的

但是js相当有技术含量!!!,但是咱们主要是做后端的,所以说学js学的比较少!!!可以让你们秀儿出来页面的那种。所以以后不断的学习js,我个人特别喜欢js。因为js是一门独立的语言有自己的语法格式。Js这门语言在语言排名当中没有出过前五名

http://github.com/ 这个需要注册,咱们会讲Git,版本控制,开发必用!!!服务器在国外打开比较慢

JavaScript:简称js。实现网页的动态效果的

JavaSCript和java有什么关系呢?没有关系,借助了java的名气命名。就好比老婆和老婆饼

好比雷锋和雷峰塔没有任何关系的

有自己的独立的语法格式

css修饰html标签的

js也是修饰html标签的,可以标签动起来的一门语言,所以在写代码的时候还是先写html标签

二、Js的三种引入方式

类比css有三种引入方式,这个js也有三种引入方式。因为你也是修饰html标签的
1.相当于行内
2.相当于内联
3.相当于外联

2.1js的初始

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js的三种引入方式</title>
		<!-- 第二种引入方式,类似css内联
		 放在任意位置都可以的,并不只是放在head头标签
		 可以放在网页的任意一个位置
		 写一个script标签,然后在script标签中写js的语法格式就可以了
		 -->
		 <script>
			 var num = 123;//int num = 123;不用指定数据类型,自动识别
			 //控制台打印一些,Java System.out.println()
			 //js控制台打印
			 console.log(num);
		 </script>
		 <!-- 第三种写法类型类似咱们的css的外联 link href
		  script src属性在当前页面引进外部的css文件
		  -->
		  <script src="test.js" type="text/jscript" charset="UTF-8"></script>
	</head>
	<body>
		<!-- 先看第一种写法 
		button  按钮  有一个属性叫做onclick
		这个onclick是当你点击这个按钮的时候执行这个onclick
		这个onclick属性值必须写js的代码
		alert()是js的代码。它是js封装好的一个函数
		这个函数的功能是  弹窗效果!!
		-->
		<button onclick="alert('弹窗,出来了哦!')">点一下</button>
	</body>
</html>

结果如下(示例):
在这里插入图片描述

2.2js输出

使用window.alert()写入警告框
使用document.write()写入HTML输出
使用console.log()写入浏览器控制台

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<!-- 使用window.alert()写入警告框
			使用document.write()写入HTML输出
			使用console.log()写入浏览器控制台
		-->
	</head>
	<body>
	</body>
	<script>
		//window是js封装好的一个对象,默认就是在本窗体在调用
		// window.alert("使用window调用一个叫alert函数");
		//document就是封装好的一个对象,当前文档流对象,当成body的对象
		document.write("我是一个页面");
		// console.log("呵呵哒");
	</script>
</html>

结果如下(示例):
在这里插入图片描述

3.3js语句

类似于java中声明变量如何声明
int a = 12;

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>声明js变量</title>
	</head>
	<body>
	</body>
	<script>
		// 如何声明一个js变量
		var a = 20;
		var b = 30;
		var c = 40;
		console.log(a,b,c);
		var d,e,f;
		d = 20;
		e = 30;
		f = 40;
		console.log(d,e,f);
		// 这个分号带不带都行,但是如果写在一行了,就必须带分号
		var name = "狗蛋";var age = 12;console.log(name,age);
	</script>
</html>

结果如下(示例):

在这里插入图片描述

四、js的数据类型

number 数字(包含了咱们的整数和浮点数)
String 字符串
boolean 布尔类型
object 对象
array 数组 特殊的object

1.首先在当前项目所在的文件夹外面创建一个test.js的文件,代码如下:

/*
	js的基本数据类型:
		1.number  包含了整数和小数
		2.String  字符串
		3.boolean  布尔
	关于js的语法格式的注意事项:
		1.如果js代码不换行写的话,必须带分号,代表一条语句结束
			以后会碰到不换行的写法吗?会,很多!!!
			不换行写的时候,执行效率高,但是可读性差
		2.变量的命名和java变量命名的规则一摸一样
*/
var num = 10;console.log(num)//控制台打印的一个变量num
//怎么知道这个num变量的数据类型呢  typeof
console.log(typeof num)//查看num这个数据类型的  number
var num1 = 3.141555;
console.log(num1)
console.log(typeof num1);//number

//声明字符串类型的数据
//可以使用单引号,也可以使用双引号
var str1 = "你好";
var str2 = '好的很';
console.log(str1)
console.log(str2)
console.log(typeof str1)//string类型的数据
// 字符串拼接输出打印你好好的很
console.log(str1 + str2)
document.write(str1 + str2);

// 布尔类型的数据只有两个值 true false
var ret1 = true;
var ret2 = false;
console.log(ret1)
console.log(ret2);
console.log(typeof ret1);

//字符串的一些操作,和java中的差不多
str2 = str2 + "睡吧";//字符串的拼接,一般用这个
console.log(str2)

str3 = '大肠刺身'.concat(",羊眼刺身");//字符串拼接方法
console.log(str3);

// 分割一个字符串,把一个字符串变成一个数组
var arr = "生吃鸡蛋,生吃韭菜,生吃腰子".split(",")
console.log(arr)//和java数组长的非常像
console.log(arr[2])//生吃腰子,下标从0开始
console.log(typeof arr)//数组也是object 数组也是一个对象

// 去除空格  trim
var str4 = "   干锅榴莲  ";
console.log(str4)
// str4 = str4.trim()//去除首尾空格
str4 = str4.trimLeft()
str4 = str4.trimRight()
console.log(str4)

代码如下(示例1):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js的数据类型</title>
		<script>
			var num = 23;
			console.log(num)//控制台打印
			// 单行注释
			// 多行注释 /**/
		</script>
		<!-- 引入外部的js文件 -->
		<script src="test.js"></script>
	</head>
	<body>
		<!-- js中声明字符串的时候,单引号双引号都可以,但是双引号中不能再有双引号 -->
		<button onclick="alert('是一个弹窗效果')">点一下</button>
	</body>
</html>

结果如下(示例1):
在这里插入图片描述

代码如下(示例2):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div></div>
	</body>
	<!-- 使用js的第二种引入方式 -->
	<script>
		// 对象  以后还会再讲 json对象【重点】
		// 主要是 后端Java代码返回一个json字符串,然后前端(js)
		// 拿到以后转为一个json对象进行操作
		// 全靠这个东西进行前后端数据交互的!!
		// 大括号代表的是一个对象,大括号里面的是键值对的数据
		var student = {"name" : "李白","age" : 28};
		console.log(student)
		// 获取name的值,怎么获取?
		console.log(student.name)
		
		console.log(student.age)
		// 还有一种写法,根据键获取值
		console.log(student["name"])
		// 刚才让大家看了,数组也是object
		// 搞了一个数组,这个数组放了多个对象
		var students = [{"name":"狗蛋","age":34},
						{"name":"翠翠","age":32},
						{"name":"大黄","age":13}]
		console.log(students)
		//获取第一个对象的name值
		console.log(students[0].name)
		// 难一点的对象
		var students1 = {"java" : [{"name":"京京"},{"name":"红红"},{"name":"花花"}]}
		console.log(students1.java[0].name)
		//碰到大括号就使用.通过键获取值
		// 碰到中括号就使用[]索引来获取值
	</script>
</html>

结果如下(示例2):
在这里插入图片描述
代码如下(示例3):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		// 声明一个数组 第一种声明方式
		var arr1  = new Array()
		arr1[0] = 12
		arr1[1] = 23
		console.log(arr1)
		// 第二种声明方式
		var arr2 = ["狗蛋","花花","旺财"];;
		// 取数据
		console.log(arr2[2])//旺财,和java中一样都是通过索引来取值的
		console.log(typeof arr2)//object
	</script>
</html>

结果如下(示例3):
在这里插入图片描述

五、运算符和分支结构

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		//运算符
		/*
		算术运算符: + - * / %
		关系运算符: > < >= <= != == ===
		逻辑运算符:  && || !
		*/
	   /*
		分支结构的语法结构:
			和java一摸一样
			if(){}
			if(){} else{}
			if(){} else if(){} else{}
	   */
	  var num = 20
	  if(num > 20){
		  console.log("heheda")
	  } else {
		  console.log("hahada")
	  }
	  // ==判断数据一致
	  console.log(1 == '1')//比较的是内容,不看数据类型 true
	  console.log(1 === '1')//比较的更加严格,要看数据类型的 false
	  
	  //switch
	  var num1 = 3;
	  switch(num1){
		case 1:
			console.log("给爸爸打电话")
			break;
		case 2:
			console.log("给妈妈打电话")
			break;
		case 3:
			console.log("给爷爷打电话")
			break;
		default:
			console.log("给奶奶打电话")
			break;
	  }
	  // 循环
	  /* js里面的循环  和Java一样,只不过多了一些东西
	  while{}
	  for(){}
	  do{}while()*/
	  var a = 10
	  // while(a-- > 0){
		 //  console.log(a)
	  // }
	  var b = 10
	  // do{
			// console.log(b)
			// b--
	  // }while(b > 0)
	  // for(var i = 0;i<= 10;i++){
		 //  console.log(i)
	  // }
	  // 打印九九乘法表
	  for(var i = 1; i< 10;i++){
		  for(var j = 1;j<= i;j++){
			  document.write(j +" * "+ i+" = " +i*j + "&nbsp;&nbsp;&nbsp;&nbsp")
		  }
		  document.write("<br>")
	  }
	  var student  = {name:"大黄",age:10};
	  // 也可以使用循环 类似于增强for循环
	  // 循环出来key值,有了key值能不能获取value的值
	  for(var studentkey in student){
		  console.log(studentkey + ":" + student[studentkey])
	  }
	  
	  var students = [{"name": "大黄","age":25},{"name":"花花","age":12},{"name":"强强","age":35}]
	  for(var i = 0;i<students.length;i++){
		  console.log(students[i].name)
		  console.log(students[i].age)
	  }
	</script>
</html>

结果如下(示例):
在这里插入图片描述

六、函数

js中函数的语法格式

function 方法名字(参数1,参数2,参数3){
要执行的代码
}
代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		// 声明一个函数,函数是一个功能
		// function alertInfo(a){//带有一个参数的方法,不用带数据类型
		// alert(a)//没有返回值,只是一个弹窗效果
		// }
		// 函数调用
		// alertInfo("呵呵哒")
		// function add(a,b){
		// 	return a + b//有返回值的
		// }
		// var num = add(3,2)
		// console.log(num)//NaN  not a number  咱们代码出错的时候,额没有报错,但是nan错
		function add(a,b,c){//没有方法的重载
			return a + b + c
		}
		var num1 = add(3,2,1)
		console.log(num1)
		//开发中很少声明同名的方法
		
		// 匿名函数,就是没有名字的函数
		var func = function (a,b){
			return a + b
		}
		// 变量名字(),就相当于调用了这个匿名函数
		console.log(func(2,3))
		
		// 讲解一下闭包
		var arr = [10,5,70,50]
		// js中方法的参数可以是一个匿名函数,这个匿名函数被称为闭包
		//当a-b是一个整数的话 a 大于 b a 和 b 交换位置
		document.write(arr.sort(function(a , b){
			return a - b
		}))
		document.write("<br />")
		var arr1 = [10,12,86,35,21]
		//js中方法的参数可以是一个匿名函数,这个匿名函数被称为闭包
		//当a - b 是一个正数的话 a 大于 b a 和b 就交换位置
		document.write(arr1.sort(function(a,b){
			return a - b
		}))
	</script>
</html>

结果如下(示例):
在这里插入图片描述

七、DOM【重要】

我们js要修饰html里面的标签,第一步就是找到标签,然后再对标签加一些效果
document object model 文档对象模型
javascript可以把html的每一个标签看作一个对象
找到标签,然后把标签变成js中的对象

document.getElementById(id属性的值) 返回的是一个对象,通过id的属性值获得的
document.getElementsByClassName(class属性的值) 返回的是一个数组,通过class属性值获取的
document.getElementsByTagName(标签的名字); 返回的是一个数组,通过标签的名字获取的
document.getElementsByName(name属性的值) 返回的是一个数组,通过name属性的值获取的

四个方法的目的都是找到js要修饰的标签对象。css选择器

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="div1">
			<div>大河向东流</div>
		</div>
		<span class="cls1">红牛</span>
		<span class="cls1">雷碧</span>
		<span class="cls1">康帅傅</span>
		<span class="cls1">大个核桃</span>
		<p><span>越成熟越真诚</span></p>
		<footer name=ft"">想吃辣条了</footer>
		<br />
		
		<!-- onclick单击事件,点一下会执行属性的值 刚好放的是一个js的函数,函数在执行 -->
		<button type="button" onclick="divChange()">点一下</button>
		<br />
		<button onclick="clsChange()">点一下变大变红</button>
		<br />
		<button onclick="tagChange()">点一下内容变化</button>
		<br />
		<button onclick="nameChange()">点一下内容变化</button>
	</body>
	<script>
		// 通过id属性获取标签的对象 getElementById
		function divChange(){
			console.log("qwer")
			//1.首先找到div1,通过document把div变成一个对象
			// getElementsById 得到元素对象依靠id属性
			var div1 = document.getElementById("div1")
			console.log(div1)
			// innerHTML 获取元素对象的内部包裹的东西
			console.log(div1.innerHTML)//打印的是带有标签的!!
			// 替换掉div1包裹的内容
			div1.innerHTML = "<span>樯橹灰飞烟灭</span>"
		}
		// 通过class属性获取标签对象 getElementsByClassName
		function clsChange(){
			// 找到上面的多个span标签对象,验证了一句话,id是唯一的,class是可以有多个的
			var cls = document.getElementsByClassName("cls1")
			console.log(cls)//碰到数组有什么想法?遍历
			for(var i = 0;i < cls.length;i++){
				console.log(cls[i])//每一个span对象
				// 修饰上面标签的css
				console.log(cls[i].style)//获取标签对象的所有属性
				
				cls[i].style.color="red"//将字体的颜色改为红色
				// 想要通过js设置样式的时候
				// 对象调用style 再调用css样式就行了
				// 只不过 css带有-  变为了小驼峰的命名规则
				cls[i].style.fontSize="50px"
			}
		}
		// 通过标签的名字获取标签对象  getElementsByTagName
		function tagChange(){
			// 通过标签的名字来找到要修饰的标签的对象
			var tags = document.getElementsByTagName("p")
			console.log(tags)
			//字体的颜色变为金色的,字体的大小变为50px,内容变为说着玩的
			console.log(tags[0])
			console.log(tags[0].innerHTML)//带有html标签的
			console.log(tags[0].innerText)//不带标签只有文本内容的
			//一定要先变为对象,数组是没有这些属性的
			 tags[0].style.color="gold"
			 tags[0].style.fontSize="50px"
			 tags[0].style.fontFamily="楷体"
			 tags[0].innerText="说着玩的"
		}
		// 通过name属性获取标签对象 getElementsByName
		function nameChange(){
			// 通过name属性找到footer标签
			var ft = document.getElementsByName("ft")
			ft[0].style.color="tomato"
			ft[0].style.fontSize="50px"
			ft[0].innerHTML="大辣片"
		}
	</script>
</html>

结果如下(示例):
在这里插入图片描述
在这里插入图片描述

八、动态创建div

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body id="b1">
		<!-- 我一点击button按钮
			按钮,给我在body标签再创建一个div标签
			可以通过js来创建
		-->
		<button onclick="test()">点我啊!!</button>
	</body>
	<script>
		function test(){
			//1.首先找到body标签对象
			var b1 = document.getElementById("b1")
			// 2.创建一个div标签对象
			var div1 = document.createElement("div")
			console.log(div1)
			// 3.对这个空的div加一些css属性
			div1.style.width="300px"
			div1.style.height="200px"
			div1.style.backgroundColor="red"
			div1.innerHTML="我是谁,我在哪"
			console.log(div1)
			// 4.将新建的div对象放到body对象中就行了
			b1.appendChild(div1)
		}
	</script>
</html>

结果如下(示例):
在这里插入图片描述
在这里插入图片描述

7.1DOM的第二种实现方式

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="div1"></div>
		<button>点一下</button>
	</body>
	<script>
		var div1 = document.getElementById("div1")
		var btns = document.getElementsByTagName("button")
		// 要点击button  对象.属性(事件属性) = 匿名函数
		// 这个对象进行某一个操作onclick 单击事件,执行后面匿名函数
		// 单击事件onclick
		// btns[0].onclick = function(){
		// 	div1.style.width = "500px"
		// 	div1.style.height = "300px"
		// 	div1.style.backgroundColor="red"
		// }
		// 双击事件ondbclick
		// btns[0].ondblclick = function(){
		// 	div1.style.width="500px"
		// 	div1.style.height="300px"
		// 	div1.style.backgroundColor="red"
		// }
		// 鼠标移入事件onmouseenter
		btns[0].onmouseenter = function(){
			div1.style.width = "500px"
			div1.style.height="300px"
			div1.style.backgroundColor="red"
		}
	</script>
</html>

结果如下(示例):
在这里插入图片描述

九、Window对象

所有浏览器都支持window对象,它代表浏览器的窗口。所有全局JavaScript对象,函数和变量自动成为window对象的成员。全局变量是window对象的属性,全局函数是window对象的方法。我们有时候省略了window,比如alert()弹框效果,全写:window.alert()

9.1window下面的onload属性

onload是浏览器只要被启动,就会执行onload这个属性
onclick是鼠标点击之后才会运行的
首先找到标签对象,拿标签对象调用属性或则方法(匿名函数)

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>window的load属性</title>
	</head>
	<body id="b1">
		<div id="div1"></div>
	</body>
	<script>
		// 只要浏览器加载,就会执行onload方法 onload Function(event)
		// window.onload = function(){
		// 	var div1 = document.getElementById("div1")
		// 	div1.style.width="500px"
		// 	div1.style.height="200px"
		// 	div1.style.backgroundColor="green"
		// }
		// window.onload写不写都可以,因为script代码在咱们的页面上肯定会执行的
		var div1 = document.getElementById("div1")
		div1.style.width="500px"
		div1.style.height="200px"
		div1.style.backgroundColor="green"
	</script>
</html>

结果如下(示例):
在这里插入图片描述

9.2window获取电脑窗体的宽高

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		// 如果这样写的话,ie 5,6,7不行的,不兼容的
		// var h = window.innerHeight
		// var w = window.innerWidth
		// window.document.write(h + ":" + w)
		// 所有浏览器都兼容的 ||  或,如果
		// 兼容的写法,所以js太复杂了,用谷歌和火狐行,但是ie和360等非主流浏览器就不行
		var w = window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth
		var h = window.innerHeight||document.documentElement.clientHeight||document.boty.clientHeight
		window.document.write(h + ":" + w)
	</script>
</html>

结果如下(示例):
在这里插入图片描述

9.3Window提示框

弹框、确认框、输入框、原装的js的这些样式比较难看,不要自己写,用别人封装好的。

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Window提示框</title>
	</head>
	<body>
		<button type="button" id="btn1">提示框</button>
		<button type="button" id="btn2">确认框</button>
		<button type="button" id="btn3">输入框</button>
	</body>
	<script>
		// 提示框 window.alert()弹框
		var btn1 = document.getElementById("btn1")
		btn1.onclick = function(){
			window.alert("你好,java")
		}
		// 确认框 window.confirm("你是单身狗吗!")
		var btn2 = document.getElementById("btn2")
		btn2.onclick = function(){
			var ret = window.confirm("你是单身狗吗?")
			if(ret){
				window.alert("这样我就放心了")
			} else{
				window.alert("祝你们百年好合")
			}
		}
		// 输入框
		var btn3 = document.getElementById("btn3")
		btn3.onclick = function(){
			var ret = window.prompt()
			if(ret > 10){
				window.alert("土豪")
			} else{
				window.alert("穷逼")
			}
		}
	</script>
</html>

结果如下(示例):
在这里插入图片描述

9.4window的返回和前进的效果

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<a href="5window返回和前进的效果.html">走你</a>
	</body>
</html>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button>返回</button>
	</body>
	<script>
		// 返回的效果window.history.back()
		var btns = document.getElementsByTagName("button")
		btns[0].onclick = function(){
			window.history.back()
		}
	</script>
</html>

结果如下(示例):
在这里插入图片描述

十、综合案例

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- οnsubmit="return infoConfirm()" 
		写这个的目的是如果你输入的是错误的东西,不让你的数据提交给另外一个页面
		如果是对的让你提交
		返回值是true或false
		如果是true是可以跳转到另外一个页面的,如果是false不可以跳转到另外一个页面
		-->
		<form action="tset.html" method="get" onsubmit="return infoConfirm()">
			<!-- οnfοcus="" input输入框获取焦点的时候会执行这个属性onfocus
			 -->
			姓名:<input type="text" name="name" id="nid" onfocus="clearAttr()" /><span id="nameAttr" class="attr"></span><br />
			手机:<input type="text" name="phone" id="pid" onfocus="clearAttr()" /><span id="telAttr" class="attr"></span><br />
			<input type="reset" value="重置" />
			<input type="submit" value="提交" />
		</form>
	</body>
	<script>
		function infoConfirm(){//这个方法的返回值是true或false
		var nameInput = document.getElementById("nid")
		// 验证用户名是否为空?input输入框对象有一个属性叫value值
		// 获取input输入框中的值使用value属性
		 
		 var name = nameInput.value
		 console.log(name)
		// 姓名的合法性判断
		if(name == null || name == ""){
			// 用户名不合法不能跳转
			// 在输出框旁边弹出提示信息
			var sp1 = document.getElementById("nameAttr")
			sp1.innerText="用户名不能为空"
			sp1.style.color = "red"
			// 不能跳转
			return false
		}
		// 手机号码的合法性判断
		// 1.判断手机号码是否为空
		var telInput = document.getElementById("pid")
		var tel = telInput.value
		if(tel == null || tel == ""){
			var sp2 = document.getElementById("telAttr")
			sp2.innerText="手机号码不能为空"
			sp2.style.color = "red"
			// 不能跳转
			return false
		}
		// 2.手机号输入不规范,例如:1111111111111
		// 验证手机号码的格式,正则表达式
		// 正则表达式上百搜
		var reg = /^1[3456789]\d{9}$/
		// reg.test(tel) input输入框中的数和reg进行模糊匹配,如果匹配不上就返回false
		if(!reg.test(tel)){
			// tel格式有问题
			var sp2 = document.getElementById("telAttr")
			sp2.innerText="手机号码的格式不正确"
			sp2.style.color = "red"
			// 不合法不能跳转
			return false
		}
	}
	// 获取焦点之后才执行此方法
	function clearAttr(){
		var attrs = document.getElementsByClassName("attr")
		for (var i = 0; i < attrs.length; i++) {
			attrs[i].innerText = ""
		}
	}
	</script>
</html>

结果如下(示例):

在这里插入图片描述

总结

提示:这里对文章进行总结:还没想好总结

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
非常感谢您的提问!JavaEE大作业是一个非常重要的项目,因此在完成该项目之前,您需要掌握一些基本的知识和技能。以下是一些保姆教程,以帮助您顺利完成JavaEE大作业。 1. JavaEE基础知识 在开始编写JavaEE大作业之前,您需要掌握JavaEE基础知识。这包括Java基础、Servlet、JSP、JDBC、JavaBean等。您可以通过一些在线教程或书籍来学习这些知识。 2. 数据库设计与操作 JavaEE大作业通常需要与数据库交互,因此您需要掌握数据库设计和操作的基本知识。您可以学习SQL语言、MySQL数据库、Oracle数据库等。 3. Spring框架 Spring框架是一种流行的JavaEE框架,它提供了很多功能和工具,可以帮助您快速开发JavaEE应用程序。您可以学习Spring框架的基本知识,如Spring MVC、Spring Boot、Spring Security等。 4. 前端技术 JavaEE大作业通常需要开发一个漂亮的用户界面,因此您需要掌握一些前端技术。您可以学习HTML、CSS、JavaScript、jQuery等技术,以及一些流行的前端框架,如Angular、React等。 5. 项目管理工具 在开发JavaEE大作业时,您需要使用一些项目管理工具,如Maven、Gradle等。这些工具可以帮助您管理项目依赖关系、构建和部署项目等。 以上是一些基本的保姆教程,以帮助您顺利完成JavaEE大作业。当然,这只是一个大概的指导,具体还需要根据您的项目需求和实际情况来进行学习和实践。祝您成功!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小yu别错过

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

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

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

打赏作者

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

抵扣说明:

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

余额充值