JavaScript学习笔记

JavaScript学习笔记

JavaScript:

申明方式:
	1.在head标签中使用script标签进行js代码的申明
	<script type="text/javascript"> </script>
		作用:js代码智慧作用于当前界面
	2.在head标签中使用script标签引入外部申明好的js文件
	<script src="js文件的相对路径" type="text/javascript" charset="utf-8" ></script>
		作用:引入外部申明好的js文件
		特点:实现js文件的重复使用,避免代码的冗余
	注意:因为js在HTML文档中是一门单独的语言,所以可以申明在文档中的任意位置,一般申明在head中
js的变量学习:
	所有变量的申明只有 var 关键字
	alert  输出
	注意:
		js的变量名严格区分大小写
		js中的字符串可以使用单引号也可以使用单引号
		js中可以申明同名变量,后变量会将前变量覆盖
	js中的数据类型:
		数据类型判断关键字:typeof
		数据类型:
			number:所有的数据类型均为number
			string:字符和字符串均为字符串类型
			boolean:
			object:对象类型
			null:空对象赋值,主要是与undefined区分(nll属于object的数据类型)
			Undefined:变量申明不赋值的情况下默认为undefined
			注意:在js代码中,尽可能的给申明变量赋初始值,因为typeof会将不存在的数据类型判断为undefined类型的数据
	js的运算符:
		算数运算符:
			加减乘除取余(“+”,“-”,“*”,“/”,“%”)
			在字符串中“+”符合好代表的是字符串的连接符,并不会参与运算
			在算数运算中如果运算符两边的数据类型不是number的话,会使用Number()强制转化后再进行运算(这里是指“-”,“*”,“/”,“%”运算符。“+”运算符并不会这样运算,只会进行字符串的连接)
		逻辑运算符:
			与java使用一样
			“!”,“&”,“|”,“||”,“&&”
		关系运算符:返回值为true或者false
			!=:,>=:,<=:  与java使用一样
		自增运算符:
			++,--,+=,-=  与java使用一样
		特殊关系运算符:返回值为true或者false
			等值运算符:
				==:
					先判断类型,类型一致则直接比较,类型不一致,则先使用Number()强制转化以后在进行比较
					拓展:null==undefined  返回值是true
			等同运算符:
				===:
					先判断类型,类型一致则再比较内容,内容也一致则返回true,内容不一致则返回false;类型不一致直接返回false。
					拓展:null===undefined  返回值是false。因为null为obejct类型的
js逻辑结构和循环结构的学习:
	if结构:
		单分支结构:
			if(判断条件){执行体}
		多分支结构:
			if(判断条件){执行体} else{执行体}
	switch选择结构:
		注意:判断的变量可以是number类型,也可以是string类型
		因为比较是按“===”进行判断的
	循环结构: 
		for(变量;条件;迭代条件){}
		while(循环条件){}
		do{}while(循环条件)
	九九乘法表演示:
		for(var i=1;i<=9;i++){
			for(var j=1;j<=i;j++){
				document.write(i+"*"+j+"="+i*j+"&nbsp;&nbsp;&nbsp;&nbsp;");
			}
			document.write("<br />");
		}
js的数组学习:
	1.数组的申明:
		var arr1=new Array(); 申明一个空数组
		var arr2=new Array(length);申明一个带长度的数组
		var arr3=[1,2,3,4,5]; 申明赋值的数组(最常用)
		注意:js中的数组申明不用指定长度,js的数组长度是不固定的,会随元素的数量改变数组的长度
	2.数组的赋值和取值:
		数组可以存储任意类型的数据
		脚标可以是任意正整数或者是0
		js不存在数组溢出之说,因为js的数组长度是不固定的
		数组的取出与Java一样。如果脚标不存在返回undefined
	3.数组的length属性:
		作用:
			数组名.length  返回当前数组的长度
			数组名.length=新数值  动态的改变数组的长度
			注意:
				如果length>原有长度,则用"."来填充
				如果length<原有长度,则把数组的后面删除掉
	4.数组的遍历:
		for(var i=0;i<arr.length;i++){ 
			alert(arr[i]);
		}普通遍历
		for(var i in arr){ 
			alert(i);
		}专有遍历
js的函数
	作用:功能代码块的封装,减少代码的冗余
	1.函数的申明
		方式一:
			function 函数名(形参1,形参2,...){执行体}
		方法二:
			此声明表明函数也属于对象
			var 变量名=new Function("形参1","形参2",....,"函数执行体");
		方式三:
			var 变量名=function(形参1,形参2,....){函数执行体}
	2.函数的参数
		js中的函数在调用时,形参可以不赋值,不会报错
		js中的函数在调用时,形参赋值可以不全赋值,不会报错,但是实参会一次进行赋值
	3.函数的返回值
		js中如果函数有返回值直接返回,如果没有返回值则会返回undefined。
	注意:
		js代码的声明区域和执行区域是一起的,都是在js代码的代码域中。
	4.函数的执行符:
		在js中,函数的执行符是(),没有小括号则函数名其实就是一个变量,加上小括号则函数将会被执行
	5.函数作为实参传递:
		在js中函数是可以作为实参进行传递的
		开发中经常用的函数传递:
			function text(fn){//text函数在被调用的时候,实参必须是一个函数
				fn();
			}
			text(function(){
				alert(...);
			})
js中类的学习:
	1.类的申明:
		function 类名(形参1,形参2){
			this.属性名1 = 形参1;
			this.属性名2 = 形参2;
			...
			this.属性名=fn;
		}
	2.类的使用:
		var 对象名 = new 类名(实参1,实参2,...);
		注意:
			js中类的内容只是对象的公共部分,每个对象还可以自定义的扩充;
	3.类的“继承”:
		prototype:可视为静态定义
			使用方法:
				Person.prototype.test =function(){};
				p1.test===p2.test  //结果是ture
			prototype关键字实现了不同对象之间的数据共享,不隶属与对象,隶属于类
			作用:
				实现某个类的所有子对象的方法区对象的共享,节省内存
自定义对象:
	对象的作用:用来存储整体数据
	原因:我们无法预先知道对象的属性,因此我们创建自定义对象来临时存储数据,保证数据的完整性。
	使用:
		1.创建自定义对象
			1.var 对象名 = new Obeject();

			2.var 对象名 = {};
		2.一般用于存储数据,不会再自定义对象中存储函数对象
js的事件机制
	解释:当我们的行为动作满足了一定的条件后,会触发某类事务的执行
	作用:主要是结合js的函数来使用
	内容:
		1.单击事件
			单机:onclick	鼠标单击被触发
			双击:ondbclick	鼠标双击被触发
		2.鼠标事件
			鼠标悬停:Onmouseover	当鼠标悬停在某个HTML元素上的时触发
			鼠标移动:Onmousemove	当鼠标在某个HTML元素上移动时触发
			鼠标移出:Onmouseout 	当鼠标在某个HTML元素上移出是触发
		3.键盘事件
			键盘弹起事件:Onkeyup		当键盘在某个HTML元素上弹起时触发
			键盘下压事件:Onkeydown	当键盘在某个HTML元素上下压时触发
		4.焦点事件
			获取焦点:Onfocus	当某个HTML元素获取焦点是触发
			失去焦点:Onblur		当某个HTML元素失去焦点是触发
		5.页面加载事件
			页面加载:Onload		当页面加载成功后触发
	注意:
		js中添加事件的第一种方式:
			在HTML上直接使用事件属性进行添加,属性值为所监听执行的函数
		js中的事件只有在挡墙的HTML元素上有效
		一个HTML元素可以添加多个不同事件
		一个事件可以监听触发多个函数的执行,但是不用的函数之间要用分号间隔
	使用:
		1.给合理的HTML标签添加合适的事件
			onchange	select下拉框
			onload		body标签
			单双击		用于会进行点击事件的HTML元素
			鼠标事件		用于会进行鼠标移动操作的HTML元素
			键盘事件		用于会进行键盘操作的HTML元素
		2.给HTML元素添加多个事件时,注意事件之间的冲突
			eg:单击和双击
			当事务的触发条件包含相同部分是,会产生事件之间的冲突
		3.事务的阻断
			当事务所监听的函数的将返回值返回给事务时:
				false:则会阻断当前事务所在HTML标签的功能
				true:则继续执行当前事务所在的HTML标签功能
		4.超链接调用js函数
			<a href="javascript:函数名()">调用js函数</a>
BOM浏览器对象模型:是规范浏览器对js语言的支持
BOM的具体实现是window对象

window对象的学习与使用:
	1.window对象不用new,之间进行使用即可,类似Math的使用方法,window关键字可以省略不写
	2.框体方法:
		警告框:window.alert()		提示一个警告信息。无返回值
		确认框:window.confirm()	提示用户选择一项操作。有返回值(确认/取消)
		提示框:window.prompt()		提示某个信息的录入或者收集。点击确定,返回当前录入的数据,默认返回空字符串;点击取消,返回null
	3.定时和间隔执行方法
		window.setTimeout(funcyion(){},time);
			参数1:函数对象
			参数2:事件,单位毫秒
			作用:指定时间后执行指定函数
			返回值:返回当前定时器的id
		window.setInterval(funcyion(){},time);
			参数1:函数对象
			参数2:事件,单位毫秒
			作用:每间隔指定时间执行指定函数
			返回值:返回当前间隔期的id
		window.clearTimeout(id);
			参数:定时器的id
			作用:用来停止指定的定时器
		window.clearInterval(id);
			参数:间隔期的id
			作用:用来停止指定的间隔器
	4.子窗口方法
		window.open('子页面的资源(相对路径)','打开方式','配置');
			实例:window.open('son.html','newwindown','height=400,weidth=600,top=100px,left=320px,');
		windown.close();
		注意:关闭子页面的方法只能用于关闭使用open打开的子页面
	5.子页面调用父页面的函数
		window.opener.父页面的函数
	6.js的window对象的常用属性
		地址栏属性
			window.location.href="新的资源路径";
			window.location.reload();	重新加载页面资源(刷新)
		历史记录属性
			window.history.forward();	页面资源前进
			window.history.back();	页面资源你后退
			window.history.go(index);	页面跳转到指定页面的纪录。当index=0时为刷新页面
		屏幕属性
			window.screen.width		获取浏览器宽度属性
			window.screen.height	获取浏览器高度属性
		浏览器配置属性
			window.navigator.userAgent	获取浏览器配置属性
		主体面板属性(document)
document对象
	1.document对象的概念
		浏览器对外提供的支持js的用来操作HTML文档的一个对象,此对象封存的HTML文档的所有信息
	2.使用document:使用先于创建,操作的是内部封存好的信息
		获取HTML元素的对象
			直接获取方式
				通过id
				通过name属性
				通过标签名
				通过class属性值
			间接获取方式
				父子关系
				子父关系
				兄弟关系
			注意:空格代表
		操作HTML元素对象的属性
			获取元素属性
			操作元素属性
				获取:
					元素对象名.属性名	返回当前的属性值
					元素对象名.getAttribute("属性名");	返回自定义属性值
				修改:
					元素对象名.属性名=属性值
					元素对象名.setAttribute("属性名","属性值");	修改属性值里的属性值
					注意:
						尽量不要修改name值和id值
						使用自定义方式获取固有属性值内容时,除了value的值获取的是默认值,不能获取到实时的用户数据之外,其他的均无异
		操作HTML元素对象的内容与样式
			获取元素对象
				获取
					元素对象名.innerHTML //返回当前元素对象的所有内容,包括HTML标签
					元素对象名.innerText //返回当前元素对象的文本内容,不包活HTML标签
				修改
					元素对象名.innerHTML="新的值" //回将原有的所有内容覆盖,包括HTML标签
					元素对象名.innerText="新的值" //会将原有的所有内容覆盖,而且会将HTML标签以文本方式显示
			操作元素样式
				获取元素对象
					通过style属性	
						元素对象名.style.样式名="样式值" //添加或者修改
						元素对象名.style.样式名="" //删除样式
						注意:
							以上操作,操作的是HTML的style属性申明中的样式,而不是其他css代码域中的样式
					通过className属性
						元素对象名.className="新的值"  //添加或者修改选择器样式
						元素对象名.className=""  //删除选择器样式
		操作HTML的文档结构
			增加节点
			删除节点
			第一种方式:使用innerHTML   //该方法不适用于table的操作
				div.innerHTML=div.innerHTML+"内容"  //增加节点
				div.innerHTMl=""  //删除所有节点
				父节点.removeChild(子节点)  //删除指点节点
			第二种方式:
		document操作form表单元素
			获取form表单对象:
				使用id:fm=document.getElementById("fm");
				使用name属性:var frm=document.frm;
			获取form下的所有表单元素集合
				fm.elements
			form表单提交的常用方法
				表单对象.submit();   //js中的提交
				表单对象.reset();   //js中的重置属性
			form表单的属性操作:
				表单对象名.action="新的值"; //动态的改变数据的提交路径
				表单对象名.method="新的值"; //动态的改变提交方式
			js表单元素的通用属性
				只读属性:readonly="reaaonly" //不可以进行更改,但是数据可以提交
				关闭属性:disabled="disabled" //不可以进行任何操作,数据也不会提交
			js操作多选框,单选框
				被选中状态下在js中checked属性值为true,未被选中状态为false
			js操作下拉框
				被选择的option对象在js中selected属性值为true,未被选中为false
				与按钮的onclick="函数名";运行js函数不同,下拉框调用js函数使用onchange="函数名();
		form表单校验
			// 验证用户名
			function checkUname(){
				//在对应的标签中添加onblur="checkUname()属性
				// 获去用户的用户名信息
				var code=document.getElementById("code").value;
				// 创建验证规则
				var reg=/^[\u4e00-\u9fa5]{2,4}$/
				// 获取span对象
				var span=document.getElementById("code_display");
				// 开始校验
				if(code==""||code==null){
					span.innerHTML="验证码不能为空";
					span.style.color="red";
					return false;
				}
				else if(reg.test(code)){
					span.innerHTML="验证码正确";
					span.style.color="green";
					return true;
				}
				else{
					span.innerHTML="验证码不正确";
					span.style.color="red";
					return false;
				}
				// 输出验证结果
			}
			// 验证密码
			function checkPwd(){
				//在对应的标签中添加onblur="checkPwd()属性
				// 获取用户密码
				var pwd=document.getElementById("pwd").value;
				// 创建验证信息
				var reg=/^[a-z]\w{5,7}$/;
				// 获取span对象
				var span=document.getElementById("pwdSpan");
				// 开始验证
				if(pwd==""||pwd==null){
					// 输出验证效果
					span.innerHTML="*密码不能为空";
					span.style.color="red";
					return false;
				}
				else if(reg.test(pwd)){
					// 输出验证效果
					span.innerHTML="*密码格式正确";
					span.style.color="green";
					return true;
				}
				else{
					// 输出验证效果
					span.innerHTML="*密码格式不正确";
					span.style.color="red";
					return false;
				}
				checkPwd2();
			}
			//校验确认密码
			function checkPwd2(){
				//在对应的标签中添加onblur="checkPwd2()属性
				// 获取第一次密码
				var pwd=document.getElementById("pwd").value;
				// 获取确认密码
				var pwd2=document.getElementById("pwd2").value;
				// 比较再次密码是否相同
				if(pwd2==""||pwd2==null){
					span.innerHTML="确认密码不能为空";
					span.style.color="red";
					return false;
				}else if(pwd==pwd2){
					span.innerHTML="密码确认正确";
					span.style.color="green";
					return true;
				}else{
					span.innerHTML="确认密码不正确";
					span.style.color="red";
					return false;
				}
			}
			//校验手机号
			function checkPhone(){
				//在对应的标签中添加onblur="checkPhone()属性
				return checkFile("phone",/^1[3,4,5,7,8]\d{9}$/);
			}
			// 验证邮箱
			function checkMain(){
				//在对应的标签中添加onblur="checkMain()属性
				return checkFile("main",/^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/);
			}
			// 校验籍贯(下拉框)
			function checkAddress(){
				//在对应的标签中添加onchange="checkAddress()"属性
				var sel=document.getElementById("address").value;
				var span=document.getElementById("addressSpan");
				if(sel!=0){
					span.innerHTML="籍贯选择成功";
					span.style.color="green";
					return true;
				}else{
					span.innerHTML="籍贯不能为空";
					span.style.color="red";
					return false;
				}
			}
			// 校验多选
			function checkFav(){
				//在对应的标签中的每个选项按钮上均要添加onclick="checkFav()"属性
				var favs=document.getElementsByName("fav");
				var span=document.getElementById("favSpan");
				for(var i=0;i<favs.length;i++){
					if(favs[i].checked){
						span.innerHTML="选择成功";
						span.style.color="green";
						return true;
					}
				}
				span.innerHTML="多选不可为空";
				span.style.color="red";
				return false;
			}
			// 校验必选框(如:公司协议)
			function checkAgree(){
				document.getElementById("sub").disabled=!document.getElementById("agree").checked;
			}
			//提交阻断
			function checkSub(){
				//在form表单上加上标签  onsubmit="return checkSub()"
				return checkUname()&&checkSub()&&checkPwd2()&&checkPwd()&&checkPhone()&&checkAddress()&&checkMain()&&checkFav();
			}
	/*-----------------------------------------------------------*/
			// 分装验证:相同的保留,不同的传参
			function checkFile(id,reg){
				//在对应的标签中添加onblur="checkFile()属性
				// 获取用户数据
				var inp=document.getElementById(id);
				var va=inp.value;
				var alt=inp.alt;
				// 创建校验规则
				// 获取span对象
				var span=document.getElementById(id+"Span");
				// 开始校验
				if(va==""||va==null){
					// 输出校验结果
					span.innerHTML="*"+alt+"不能为空";
					span.style.color="red";
					return false;
				}
				else if(reg.test(va)){
					// 输出校验结果
					span.innerHTML="*"+alt+"格式正确";
					span.style.color="green";
					return true;
				}
				else{
					// 输出校验结果
					span.innerHTML="*"+alt+"格式不正确";
					span.style.color="red";
					return false;
				}
			}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值