js_BOM_DO编程

1.Array对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Array对象</title>
		<!--js中定义数组对象
			注意事项:
			1)在js中定义数组,不用担心数组角标越界的问题,自动扩容
			2)在js中,数组是可以定义任何数据类型的
		-->
		<script>
			//方式1:指定数组长度
			var arr=new Array(3);
			//1.1不指定长度
			var arr=new Array();
			//1.2指定具体的元素内容
			var arr=new Array(true,'a',"hello",30);
			
			//方式2:简写方式
			var arr=[true,'a',"hello",30];
			
			//需要给数组中的元素进行赋值
			arr[0]=10;
			arr[1]=20;
			arr[2]=true;
			arr[3]=30;
			for(var i=0;i<arr.length;i++){
				document.write(arr[i]+"&nbsp;");
			}
			
			
			/**
			 * 两个方法:
			 * join(str):通过指定字符串,将数组中的内容用该字符串拼接,返回一个字符出串的值
			 * reverse():将数组中的内容进行反转
			 * 
			 * 需求:Array对象中添加一个search(array,target)
			 *      在array数组中查找target元素的位置
			 *                         添加max(array)---获取最大值
			 */
			//定义一个数组
			var array=["java","php","python","hadoop","c++"];
			var str1=arr.join("-");
			document.write(str1);
			
			//这是打印一个水平线
			document.write("<hr />");
			
			//反转
			var str2=arr.reverse();
			document.write(str2);
		</script>
	</head>
	<body>
	</body>
</html>

2.js中的自定义对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>js的自定义对象</title>
		<script>
			/**
			 * js中的自定义对象:4种
			 * 1)有参方式:类似于java中的有参构造
			 * 
			 * 举例:定义Peron对象
			 * function对象(形参){
			 * 	追加属性;
			 * 追加方法;
			 * }
			 * 创建对象
			 *       var 对象名=new 对象(实际参数);
			 */
			
			//方式1:定义一个Person对象
//			function Person(name,age){//this代表Person对象
//				//追加属性
//			this.name=name;
//			this.age=age;
//			//追加方法
//			this.say=function(){
//			alert("调用了say功能");	
//			}
//			}
//			
//			//创建对象
//			var p=new Person("eric",20);
//			//输出属性
//			document.write(p.name+"<br />");
//			document.write(p.age+"<br />");
//			//调用方法
//			p.say();

//方式2:无参的方式--类似于java中的无参构造
/*
function Person(){
	
}
//首先需要创建一个对象
var p=new Person();
//追加属性
p.name="张三";
p.age=17;
//追加方法
p.say=function(){
	alert("调用了张三的say功能");
}
*/

//方式3:创建一个obejct对象--在js中Object对象代表所有的对象包括我们的内置对象,是一个模板对象
/*
var p=new Object();
//追加属性
p.name="张三";
p.age=17;
//追加方法
p.say=function(){
	alert("调用了张三的say功能");
}
*/


//方式4:字面量的方式,类似于json格式
//[面试]json解析中有几种方式:
//(1)第三方的jar包:Gson 
//(2)FastJson
//(3)Json原生的方法
//
//  {
// "key1":"value1",	
//  "key2":"value2",	
//  "key3":"value3",	
//  
//  }

//创建对象
var p={
	//追加的属性
	"name":"王五",
	"age":"25",
	//追加的方法
	"say":function(){
		alert("调用了王五 的say功能");
	}
};
	</script>
		</head>
	<body>
	</body>
</html>

3.wiindow对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Window对象</title>
		<script>
			/**
			 * window对象中常用的方法
			 * open("url","打开方式","打开新窗口的宽高以及设置工具栏的显示")
			 * url:打开资源地址或者资源文件
			 * setInterval("任务",毫秒值)--每经过多少毫秒值重复执行了
			 * setTimeout("任务",毫秒值)--经过多少秒之后执行一次任务
			 * 取消定时器
			 * clearInterval(timerId);
			 * clearTimeout(timerId);
			 * 弹框方法:
			 * alter()
			 * 	confirm():确认对话框
			 * prompt():消息对话框和输入框
			 * 
			 * 
			 */
		function testOpen(){
			//打开一个窗口,执行open方法
			window.open("04_原型.html","_blank","width:400px;height=400px")
		}
		
		function testInterval(){
			taskId=window.setInterval("testOpen()",3000);//重复执行
		}
		function testTimeout(){
			taskId=window.setTimeout("testOpen()",3000);//只执行一次
		}
		
		//取消定时任务
		function testClearInterval(){
			window.clearInterval(taskId);
		}
		function testClearTimeout(){
			window.clearInterval(taskId);
		}
		</script>
	</head>
	<body>
		<input type="button" value="open" "testOpen()" />
		<br />
		<input type="button" value="interval" "testInterval()" />
		<br />
		<input type="button" value="timeout" "testTimeout()" />
		<br />
		<input type="button" value="timeout" "testTimeout()" />
		
	</body>
</html>

4.location对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>location对象</title>
		<script>
			/**
			 * location对象
			 * href:改变当前url的地址,实现跳转
			 * reload():重新刷新当前页面
			 */
			function testHref(){
				window.location.href="05_BOM之Windows对象.html";
			}
			
			//servlet  --->jsp--->MVC
			
			
			//reload:重新刷新页面
			function load(){
				window.location.reload();
			}
		</script>
	</head>
	<body>
		<input type="button" value="调转" "testHref()" />
	</body>
</html>

5.history对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>history对象</title>
		<script>
			/**
			 * forward():载入下一个url
			 * back():载入上一个url
			 *go(整数):装入url代替上面两个方法
			 */
			
			function testForward(){
				//跳转到目标页面
				window.history.forward();//--->可以直接被替换掉为window.history.go(1)前进/window.history.go(-1)后退
			}
		</script>
	</head>
	<body>
		<a href="02_js的自定义对象.html">跳转</a>
		<br />
		<input type="button" value="前进" "testForward()" />
	</body>
</html>

6.js事件编程

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>js事件编程</title>
		
		<!--
			事件编程的三要素:
			1)事件源
			2)编写监听器
			3)注册监听器
			
			js编程的分类:
			点击相关事件:
			  单击点击事件:onclick
			  双击点击事件:ondbclick
			  
			  和焦点相关事件
			  聚焦事件:onfocus
			  失去焦点事件:onblur
			  选项卡发生变化的事件:
			  onchange事件    举例:省市联动
			  和鼠标相关的事件
			  鼠标经过:onmouseover
			  鼠标移除:onmouseout
			  当body中的内容加载完毕:页载入事件:onload事件
			  onkeyup:按键抬起事件
			  onleydown:用户按下键盘时触发什么事件			  
		-->
	</head>
	<body>
		<input type="button" value="点我试试"  "testCilck()"/>
		<input type="button" value="多点两下"  "testDbCilck()"/>
		<br />
		用户名:<input type="text" id="username" "testBlur()" "testFocus()" value="请输入4-14位的数字或字母"  size="20"/><span id="username_tip"></span>
	  <br />  
	    籍贯:
	    <select "change()" id="jiguan">
	    	<option value="请选择">请选择</option>
	    	<option value="陕西省">陕西省</option>
	    	<option value="重庆市">重庆市</option>
	    	<option value="湖南省">湖南省</option>
	    </select>
	    城市:
	    <select id="city">
	    	
	    </select>
	    <br />
	    <div id="div1">这是div内容</div>
	</body>
			<script>
			function testCilck(){
				alter("我点了");
			}
			function testDbClick(){
				alert("多点两下");
			}
			function testFocus(){
				//确定事件:获取焦点事件
				//操作文本输入框,获取该输入框的对象
				var input=document.getElementById("username");
				//设置属性
				input.value="";
			}
			function testBlur(){
				//获取文本输入框的内容
				document.getElementById("username").value;
				//通过id获取span标签对象
				var span = document.getElementById("username_tip");
				if(username!="eric"){
					//设置span标签的innerHtml属性
					span.innerHTML="用户可用".fontcolor("green");
					
				}else{
					span.innerHTML="用户名不可用".fontcolor("red");
				}
			}
			
			
			function change(){
				//通过id="jiguan"获取select标签对象
				//通过select获取选中的内容
				document.getElementById("jiguan").value;
				//alter(jiguan)
				//获取id="city"所在的select标签对象
				var city=document.getElementById("city");
				//判断如果选中的jiguan是陕西省
				if(jiguan=="陕西省"){
					var arr=["西安市","咸阳市","宝鸡市"];
					for(var i=0;i<arr.length;i++){
						//设置城市所在的select对象的innerHTML属性
						//<option value="">arr[i]</option>
						city.innerHTML+="<option value='"+arr[i]+"'>"+arr[i]+"</option>";
					}
				}
			}
		</script>
</html>

7.DOM编程
DOM简介:
在这里插入图片描述
8.通过document的集合属性获取标签对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>通过document的集合属性获取标签对象</title>
	</head>
	<body>
		<form>
			<a href="#">超链接</a><img="" />
			<img src="" />
		</form>
		<form>
			<a href="#"></a>
			<img src="" />
		</form>
	</body>
	<script>
		/**
		 * all:返回当前页面中所有标签对象集合
		 */
	</script>
</html>

9.通过查询节点关系来获取标签对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>通过查询节点关系来获取标签对象</title>
		<!--
        	作者:offline
        	时间:2019-04-04
        				/**
			 * 节点关系:
			 *   1)parentNode:父节点
			 * 2)childNodes:当前的所有子节点
			 * 3)firstChild:最后一个节点
			 * 5)兄弟节点:sibling
			 *             nextSibling:下一个兄弟节点
			 *             previousSibling:上一个兄弟节点
			 * 
			 * 在节点关系:childNodes,firstChilde,lastChilde,有一个节点的类nodeType
			 * 查看节点类型:
			 *   空格换行:  3   #text
			 *   标签对象:  1
			 *   html注释:  8   #comment
			 */
       -->
	</head>
	<body>
		<!--这个form对象就是父节点-->
		<from>
			<a href="#"></a><input type="text" /><input type="button" />
		</from>
		<form>
			<a href="#"><img src=""/></a><input type="button" />
		</form>
	</body>
			<script>
			
			//需求1:需要获取第一个a标签对象----返回的是一个数组通过返回的下标进行获取
		var aNode =	document.links[0];
		alert(aNode.nodeName);
		
		//需求2:获取它的父节点对象
		var formNode=aNode.parentNode;
		alert(formNode.nodeName);
		
		//需求3:需要获取当前第一个form标签对象的所有子节点对象
		var nodeList=formNode.childNodes;
		alert(nodeList.length);
		for(var i=0;i<nodeList.length;i++){
			if(nodeList[i].nodeType==1){
			document.write(nodeList[i].nodeName+",节点类型是:"+nodeList[i].nodeType+"<br/>");	
			}
		}

//需求4:通过formNode获取第一个子节点对象
var firstNode=formNode.firstChild;
alert(firstNode.nodeName);
//需求5:通过formNode获取最后一个子节点对象
var lastNode=formNode.lastChild;
alert(lastNode.nodeName);

//获取第二个a标签对象
var aNode=document.links[1];
alert(aNode.nodeName);

//获取aNode的下一个兄弟节点
var next=aNode.nextSibling;
alert(next.nodeName);

//获取aNode的上一个兄弟节点
var previous=next.previousSibling;
alert(previous.nodeName);
		</script>
</html>

10.通过document方法获取标签对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>通过document方法获取标签对象</title>
		<script>
			/**
			 * 通过document方法获取标签对象
			 * 1)getElementById("id属性值");返回的是某个标签对象//id一定要唯一
			 * 2)getElementsByName("name属性值");返回的是标签对象集合
			 * 3)getElementsByTagName("标签名称");返回的是一个集合
			 */
			function init(){
				//获取input标签对象
				//var username=document.getElementById("user_name").value;
				
				//方法2:通过name属性
				var username=document.getElementsByName("username")[0].value;
				alert(username);
			}
		</script>
	</head>
	<body "init()">
		用户名:<input type="text" name="username" "init()" id="user_name"/>
	</body>
</html>

11.定时弹出广告

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>定时弹出广告</title>
		<script>
			/**
			 * 广告开始隐藏
			 *    经过3秒后,弹出广告
			 *    再经过5秒之后,隐藏广告
			 */
			
			//显示广告
			function showAdv(){
				//获取要操作的元素对象
				var img=document.getElementById("img1");
				//显示
				img.style.display="block";
				
				//再通过5秒后来隐藏广告
				window.setTimeout("hideAdv()",5000);
			}
			
			//隐藏广告
			function hidAdv(){
				//获取要操作的元素对象
				var img=document.getElementById("img1");
				//隐藏
				img.style.display="none";//隐藏掉
			}
			
			//页面载入事件
			function init(){
				//经过3秒显示广告
				window.setTimeout("showAdv()",3000);
			}
		</script>
	</head>
	<body>
		<img src="" />
	</body>
</html>

12.切换图片

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>切换图片</title>
		<script>
			function changeImag(){
				//要获取操作的img标签对象
				var img=document.getElementById("imag1");
				//更改图片src属性
				img.c="img/图片2";
			}
		</script>
	</head>
	<body>
		<input type="button" value="切换图片" "changeImag()" />
		<img src="img/图片2" id="img1" />
	</body>
</html>

13.图片自动轮播

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>图片自动轮播</title>
		<script>
			/**
			 * 页面加载事件:为了执行定时器,setInterval();
			 */
			var index=0;
			function changeImg(){
			//获取img标签对象
			var img=document.getElementById("img1");
			//更改src属性
			//img.src="img/2.jpg";
			//img.src="img/"+curIndex+".ipg";
			var curIndex=index%3+1;
			img.src="img/"+curIndex+".jpg";
			index=index+1;
			}
			
			function init(){
				//开启一个定时任务
				window.setInterval("changeImg()",3000);
			}
		</script>
	</head>
	<body "init()"><!--页面加载事件-->
		<img src="img/1.jpg" width="100%" id="img1/>
	</body>
</html>

14.document操作标签对象的其他方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>document操作标签对象的其他方法 </title>
		<script>
			/**
			 * 文档对象:document
			 * 和添加元素对象相关的方法:
			 *     createElement("标签元素名称");
			 * 举例:创建<input/>document.createElement("input");
			 * setAttribute("属性名称","属性值");
			 * 举例:元素对象.setAttribute("type","button");
			 * <input type="button"/>
			 * 和插入元素相关的方法:
			 * appendChild(指定元素对象);在父节点中调用
			 * insertBefore(新元素对象,指定元素对象);
			 *              在指定对象的前面插入这个新对象
			 * 和删除相关的方法:
			 *     removeChilde(子节点对象)
			 * 
			 */
			function addButton(){
			//创建一个input标签对象
		var input =	document.createElement("input");
		//给当前input对象中添加属性
		input.setAttribute("type","button");
		input.setAttribute("value","新按钮");
		//获取父节点对象:body
		var bodyNode=document.getElementsByTagName("body")[0];
		bodyNode.appendChild(input);
		//获取id="btn"所在标签对象
		bodyNode.insertBefore(input);
			}
			
			function delButton(){
				//获取父节点对象
				ar bodyNode=document.getElementsByTagName("body")[0];
				var last=bodyNode.lastChild;
				bodyNode.removeChild(last);
			}
		</script>
	</head>
	<body>
		<input type="button" value="添加"  "addButton()"/>
		<input type="button" value="删除"  "delButton()"/>
		<input type="button" id="btn" value="按钮" />
	</body>
</html>

15.js正则表达式----对于正则表达式我们能看懂语法就可以了

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>js正则表达式</title>
		<!--
			数量词:----这个一定要知道
			x?:出现0次或1次
			x+:出现1次或多次
			x*:出现0次或多次
			x{n}:x字符恰好出现n次
			x{n,m}:x字符出现至少n次,但是不超过m次
			
			定义正则格式:
			  var reg=/ 正则表达式/;
			  
			  test():用户输入的内容是否和当前规定的正则匹配
			         ----如果匹配,返回true,否则返回false
			js中一种弱类型语言,所以只要我们的字符串内容和正则匹配就会成功
			如果想让js的正则规则严谨:就加上边界匹配符号
			^:以什么开头
			$:以什么结束--------/[^a-zA-Z0-9]{2}$/
		-->
		<script>
			var str="12abc";
			//定义一个正则
			var reg=/[a-zA-Z0-9]{2}/;
			if(reg.test(str)){
				alert("条件成立");
			}else{
				alert("条件不成立");
			}
		</script>
	</head>
	<body>
	</body>
</html>

16.js的表单验证——重点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>js的表单验证</title>
		<!--
			对于表单的验证是非常重要的:需要掌握(但是注意正则规则我们能看懂就可以了)
			定义正则规则:
			用户名:4-14位的数字或者字母组成
			密码:6-16位的数字或者字母组成
			确认密码和密码一致
			邮箱的规则:
			   数字或者字母@数字或者字母(.cn/.com.cn/.com/...)
		-->
		<script>
			//校验用户名
			function checkUserName(){
			//获取用户名的内容
			var username=document.getElementById("username").value;
			//定义正则规则:用户名:4-14位的数字或者字母组成
			var reg=/^[a-zA-Z-0-9]{4-14}$/;
			//获取id="name_span"的span标签对象
			var nameSpan=document.getElementById("name_span").value;
			//判断用户名的内容和正则匹配
			if(reg.test(username)){
				//成功:
				//设置nameSpan的innerHTML属性
				nameSpan.innerHTML="当前用户名可用".fontcolor("green");
				return true;
			}else{
				nameSpan.innerHTML="当前用户名不可用".fontcolor("red");
				return false;
			}
			}
			
			//校验密码输入框
			function checkPwd(){
				//获取密码内容
				document.getElementById("pwd").value;
				//密码:6-16位的数字或者字母组成
				var reg=/^[a-zA-Z-0-9]{6-16}$/
				//获取id="pwd_span"标签对象
				var pwdSpan=document.getElementById("pwd_span").value;
				//开始检验
				if(reg.test(pwd)){
					pwdSpan.innerHTML="当前密码可用".fontcolor("green");
					return true;
			}else{
				pwdSpan.innerHTML="当前密码不可用".fontcolor("red");
				return false;
			}
				}
			
		//确认密码框
		function checkRePwd(){
			//获取密码内容
			var pwd=document.getElementById("pwd").value;
			//id="repwd"密码框内容
			var rePwd=document.getElementById("repwd").value;
			//id="repwd_span"
			var rePwdSpan=document.getElementById("repwd_span").value;
			if(pwd.valueOf(rePwd)){
				rePwdSpan.innerHTML="两次输入的密码一致".fontcolor("greenyellow");
				return true;
			}else{
				rePwdSpan.innerHTML="两次输入的密码不一致".fontcolor("red");
				return false;
			}
			
		}
		
		//邮箱校验
		function checkEmail(){
			//获取邮箱内容
			var email=document.getElementById("email").value;
			//数字或者字母@数字或者字母(.cn/.com.cn/.com/...)
			var reg=/^[a-zA-Z0-9+@[a-zA-Z0-9]]+(\.[a-zA-Z]{2,3}){1,2}$/;
			//获取id="email_span"的span标签对象
			var emailSpan=document.getElementById("email_span");
			if(reg.test(email)){
				emailSpan.innerHTML="当前邮箱格式可用".fontcolor("greenyellow");
				return true;
			}else{
				emailSpan.innerHTML="当前邮箱格式不可用".fontcolor("red");
				return false;
			}			
		}
		
		//最后需要去校验全部的表单,如果都通过,才能提交成功,否则失败
		function checkAll(){
			if(checkUserName()&&checkRePwd()&&checkEmail()&&checkPwd()){
				return true;
			}else{
				return false;
			}
		}
		</script>
	</head>
	<body>
		<!--
			onsubmit:表单提交是否能成功:true表示成功、false表示失败
		-->
		<form action="backend.html" method="post" "checkAll()">
			用&nbsp;户&nbsp;名:&nbsp;<input type="text"  id="username" "checkUserName()"/><span id="name_span"></span>
			<br />
			密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:&nbsp;<input type="password" id="pwd"  "checkRePwd()"/><span id="pwd_span"></span>
			<br />
			确认密码:<input type="password" id="repwd"  "checkRePwd()"/><span id="repwd_span"></span>
			<br />
			邮箱:<input type="text" id="email" /><span id="email_span" "checkEmail()"></span>
			<br />
			<input type="submit" value="注册" />
		</form>
		
	</body>
</html>

17.初识jq

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>初识jq</title>
		<!--
        	作者:offline
        	时间:2019-04-04
        	1.Jqquery其实就是js的封装,封装js的代码库
        	作用:write less,do more
        	2.Jquery的开发步骤:
        	  1)导入js库
        	  2)页面加载
        	  
        -->
		<script>
			function load(){
				alert("load 111");
			}
			function load(){
				alert("load 222");
			}
			//Jq的方式
			//方式1:
			jQuery(document).ready(function(){
				alert("jQuery(document).ready(function()");)
			});
			
			//方式2:
			$(document).ready(function(){
				alert("jQuery(document).ready(function()");)
			});
			
			//方式3:
			$(function(){
				alert("jQuery(document).ready(function()")
			});
		</script>
	</head>
	<body>
	</body>
</html>

对于JavaScript我们只要能掌握上面的这些点就可以了,有的需要重点掌握、有的能弄懂就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值