事件+JS事件对象+JSON+AJAX

一.事件

1.焦点事件

针对表单
onfocus 元素获得焦点
onblur失去焦点,如在用户离开输入框时触发
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		用户名:<input type="text" name="" id="1" value="22" onblur="bigXie()" onfocus="xiaoXie()"/>
	</body>
</html>
<script type="text/javascript">
	
	//用户离开输入框时变大写
	function bigXie(){
		var v=document.getElementById("1").value;
		document.getElementById("1").value=v.toUpperCase();
	}
	function xiaoXie(){
		var v=document.getElementById("1").value;
		document.getElementById("1").value=v.toLowerCase();
	}
</script>

2.点击事件

onclick 当用户点击某个对象时调用的事件句柄。 
ondblclick 当用户双击某个对象时调用的事件句柄。 
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>点击事件</title>
	</head>
	<body>
		<div id="div1" onclick="test()">芜湖,起飞</div>
		<div id="div2" ondblclick="test2()">汪汪队立大功</div>
	</body>
</html>
<script type="text/javascript">
	var v=document.getElementById("div1");
	function test(){
		v.style.background="red";
	}
	var v2=document.getElementById("div2");
	function test2(){
		v2.style.background="green";
	}
</script>

3.键盘事件

onkeydown键盘被按下
onkeyup键盘松开
onkeypress键盘按下并松开
通过事件对象event中的keyCode属性,可以获取键盘某个键的键码  其实就是ASCII码表中对按键的编码e.keyCode
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>键盘事件</title>
	</head>
	<body>
		<!-- onkeydown 键盘被按下事件 -->
		<input type="text" name="1" id="1" value="" onkeydown="test()"/>
		<!-- onkeyup 键盘松开事件 -->
		<input type="text" name="2" id="2" value="" onkeyup="test2()"/>
		<!-- onkeypress 键盘按下并松开事件 -->
		<input type="text" name="3" id="3" value="" onkeypress="test3()"/>
		<input type="text" name="4" id="4" value="" onkeypress="test4(event)"/>
	</body>
</html>

<script type="text/javascript">
	function test(){
		console.log("键盘被按下了");
	}
	function test2(){
		console.log("键盘被松开了")
	}
	function test3(){
		console.log("键盘按下并松开了")
	}
	/* 通过事件对象event中的keyCode属性,可以获取键盘某个键的键码  其实就是ASCII码表中对按键的编码e.keyCode */
	function test4(e){
		console.log(e.keyCode);
	}
</script>

在这里插入图片描述

4.鼠标事件

onmousedown鼠标被按下
onmouseup鼠标被松开
onmouseover鼠标移动到元素上触发事件
onmouseout鼠标移出时触发
onmousemove鼠标经过时触发
鼠标按下时,通过事件对象 event中的属性  button 或 which 可以获取鼠标按键的编号。
 	e.button 事件对象中的 button属性可以获取鼠标按键的编号
	e.which 也可以获取鼠标的按键编号 0 左键  1滚轮   2右键
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#div2{
				width: 200px;
				height: 200px;
				border: 1px black solid;
			}
		</style>
	</head>
	<body>
		<!-- onmousedown鼠标被按下事件 -->
		<input type="text" name="" id="" value="" onmousedown="test()"/>
		<!-- onmouseup鼠标被松开事件 -->
		<input type="text" name="" id="" value="" onmouseup="test2()"/>
		<!-- onmouseover 鼠标放在上面-->
		<input type="text" name="" id="" value="" onmouseover="test3()"/>
		<!-- onmouseout 鼠标移出去了 -->
		<div id="div1" onmouseout="test4()" style="width: 100px; height: 200px;border: 1px black solid;">
		</div>
		<!-- onmousemove鼠标经过了 -->
		<div id="div2" onmousemove="test5(0,event)">
	</body>
</html>
<script type="text/javascript">
	function test(){
		console.log("鼠标被按下了");
	}
	function test2(){
		console.log("鼠标被松开了");
	}
	function test3(){
		console.log("鼠标放到上面了")
	}
	function test4(){
		console.log("鼠标移出去了")
	}
	function test5(num){
		//自动类型转换
		if(num){
			//更改颜色
			document.getElementById("div2").style.background="red";
		}else{
			//更改大小
			document.getElementById("div2").style.cssText="width: 200px;height: 400px;"
		}
	}
</script>

在这里插入图片描述

5.表单事件

onsubmit 表单的提交
		onsubmit="return false"表单不能提交
		onsubmit="return true"表单能提交

onreset重置表单
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- onsubmit 表单的提交
		onsubmit="return false"表单不能提交
		onsubmit="return true"表单能提交
		
		onreset重置表单
		-->
		<form action="#" method="get" onsubmit="return true">
			用户名:<input type="text" name="uname" value="" />
			<br>
			密码:<input type="password" name="upsd" />
			<br>
			<input type="submit" value="注册" />
			<br>
			<input type="reset" name="" id="" value="" />
		</form>
		<br>
		<form action="#" method="get" onreset="test()">
			请输入姓名:<input type="text" name="" id="" value="" />
					<input type="reset"/>
		</form>
		
	</body>
</html>

<script type="text/javascript">
	function test(){
		alert("表单已重置");
	}
</script>

6.页面加载事件

当页面载入完毕后执行Javascript代码,通常,如果JS代码放到开头,可能会获取不到相应的元素对象
onload 页面加载
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>页面加载事件</title>
		<script type="text/javascript">
			//JS代码放到这里可能会获取不到元素对象
			window.onload = function() {
				var v = document.getElementById('div1');
				alert(v);
			}
		</script>
	</head>
	<body>
		<div id="div1">

		</div>
	</body>
</html>

7.其他事件

onchane下拉内容改变
onselect文本被选中
oncontextmenu右键选择事件
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>下拉内容改变</title>
	</head>
	<body>
		<select name="edu" id="sec">
			<option value="xuanz">---请选择学历---</option>
			<option value="gz">高中</option>
			<option value="dx">大学</option>
			<option value="yjs">研究生</option>
		</select>
		<input type="color" name="111" id="" value="" onchange="changeColor(this)" />
		<br>
		<input type="text" name="222" id="i" value="lisi" onselect="changeText()" />
	</body>
</html>
<script type="text/javascript">
	var v = document.getElementById("sec");
	//第二种引入事件的方式:在js内调用
	v.onchange = function() {
		//console.log("芜湖.起飞");
		//selectedIndex下拉内容所表示的索引
		console.log(v.selectedIndex);
		console.log(v.name);
		//this就是v
		console.log(this.selectedIndex);
		console.log(this.name);
	}
	function changeColor(e) {
		//console.log(e.name);
		document.body.bgColor = e.value;
	}
	function changeText() {
		document.getElementById("i").style.border = "1px red solid";
	}
	 //取消浏览器自带的默认右键效果
	window.oncontextmenu=function(e){
		//e.preventDefault();
	}	
</script>

二.JS事件对象event的属性和功能

1.event事件对象

event 事件对象由浏览器来创建,我们直接拿来使用

2.属性

 type: 获取事件类型
 keyCode 当绑定了键盘事件,可以从事件对象中获取按键的键码(ASCII码)
 which/button  当绑定了鼠标事件,可以从事件对象中获取鼠标按键的键码 0 左键 1滚轮 2右键 which是1,2,3 button是0,1,2
 timeStamp:返回事件生成的日期和时间。
 currentTarget:   获取的是绑定了该事件的元素对象
  target :  获取的是触发了该事件的元素对象 
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		用户名<input type="text" name="username" id="" value="" onmousedown="test(event)"/>
	</body>
</html>
<script type="text/javascript">
	function test(e){
		console.log(e.which);
		console.log(e.button);
		console.log(e.type);
		console.log(e.currentTarget);
		console.log(e.target);
	}
</script>

在这里插入图片描述

3.target和currentTarget的区别

 currentTarget:   获取的是绑定了该事件的元素对象
  target :  获取的是触发了该事件的元素对象 
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<ul id="box">
			<Li id="apple">苹果</Li>
			<li>香蕉</li>
			<li>桃子</li>
		</ul>
</html>

<script type="text/javascript">
	var box = document.getElementById('box');
	var apple = document.getElementById('apple');

	//直接绑定在目标元素apple上
	apple.onclick = function(e) {
		console.log(e.target); //<li id="apple">苹果</li>
		console.log(e.currentTarget); //<li id="apple">苹果</li>
		console.log(this); //<li id="apple">苹果</li>
		console.log(e.target === e.currentTarget); //true
		console.log(e.target === this); //true
	}
	
	//绑定在父元素box上(如果点击apple这个li时)
	box.onclick = function(e) {
		console.log(e.target); // <li id="apple">苹果</li>
		console.log(e.currentTarget); //<ul id="box">...</ul>
		console.log(this); //<ul id="box">...</ul>
		console.log(e.currentTarget === this); //true
		console.log(e.target === e.currentTarget); //false
		console.log(e.target === this); //false
	}
</script>

4.方法

1. 事件冒泡:当元素有了嵌套关系,每个元素绑定了事件,当我们从子元素触发了这个事件,也会去触发他父元素的事件
2.  e.stopPropagation() 阻止事件冒泡
3. e.preventDefault(); 阻止元素的默认行为
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#wai{
				width: 400px;
				height: 400px;
				border: 1px black solid;
			}
			#nei{
				width: 200px;
				height: 200px;
				border: 1px black solid;
				background-color: red;
			}
			#one{
				width: 100px;
				height: 100px;
				border: 1px black solid;
				background-color: green;
			}
		</style>
	</head>
	<body>
		<div id="wai" onclick="test(event)">
			<div id="nei" onclick="test2(event)">
				<div id="one" onclick="test3(event)">
					
				</div>
			</div>
		</div>
		
		<!-- 阻止a标签的默认跳转行为   1.# 2.javascript:void(0) 3.使用方法来阻止 -->
		<a href="javascript:void(0)">百度一下</a>
		
		<a href="http://www.baidu.com" onclick="stopp(event)">百度</a>
		<br>
		<!-- 阻止表单的提交 -->
		<form action="#" method="get" onsubmit="tijiao(event)">
			用户名:<input type="text" name="username" id="" value="" />
			<br>
			<input type="submit" value="提交"/>
		</form>
	</body>
</html>
<script type="text/javascript">
	function test(e){
		console.log(1);
		e.stopPropagation();
	}
	function test2(e){
		console.log(2);
	}
	function test3(e){
		console.log(3);
	}
	function stopp(e){
		//阻止a标签默认跳转页面的行为
		e.preventDefault();
	}
	function tijiao(e){
		e.preventDefault();
	}
</script>

三.JSON对象

1.JSON对象的引入

Java中封装数据用类来实现,但是js在ES5是没有类这个概念,只要对象/函数,ES6之后引入了
	关键字class,在ES5可以使用函数来封装

JS中封装数据的三种方式:
	1.使用函数来封装数据,当成构造函数
	2.使用Object类
	3.JSON对象封装
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
</html>

<script type="text/javascript">
	//方式1:
	//函数本身也是一个对象,使用函数来封装数据,当成构造函数
	//有参构造
	function Student(name,age){
		//alert("构造函数执行了");
		//this代表的就是这个函数对象
		this.name=name;
		this.age=age;
		//一些功能
		this.eat=function(){
			alert("吃饭的功能");
		}
	}
	var student=new Student("张三",22);
	alert(student.name);
	alert(student.age);
	student.eat();
	
	//方式2:
	//JS中提供了一个Object类
	var obj=new Object();
	obj.num=200;
	obj.name="李四";
	obj.sleep=function(){
		alert("sleep");
	}
	
	//方式3:
	
</script>

2.JSON对象

1.JSON格式已被其他语言支持,网络传输中都可以使用JSON对象格式,体积小,易于阅读,首选协议传输
2.JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于
	 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文
	 本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语
	 言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

3.JS 中的JSON对象的语法
var person={"name":"张三","age":22,"sex":"男","flag":true,"eat":function(){
		alert("吃饭的功能");
	}};

4.JS将JSON当作对象来看待,其他语言看成字符串
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
</html>
<script type="text/javascript">
	//JSON对象
	//以键值形式存储
	var person={"name":"张三","age":22,"sex":"男","flag":true,"eat":function(){
		alert("吃饭的功能");
	}};
	//取值,键找值
	alert(person.name);
	
	person.eat();

	var person2 = {
		    firstName:"John",
		    lastName:"Doe",
		    age:50,
		    eyeColor:"blue"
		};
	console.log(person2.firstName);
	console.log(person2.lastName);
</script>

3.JSON对象的遍历

如:要根据每一个键取出每一个值,单个取值较为麻烦
特有语法:  for...in循环

for...in循环也可遍历数组
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
</html>

<script type="text/javascript">
	var person2 = {
		    firstName:"John",
		    lastName:"Doe",
		    age:50,
		    eyeColor:"blue"
		};
	for(key in person2){
		alert(person2[key]);
	}
	
	//for...in循环也可遍历数组
	var arr=[1,2,3,4,5];
	for(index in arr){
		console.log(arr[index]);
	}
</script>

4.JSON对象的嵌套

实际开发中,遇到的情况复杂的话,对于复杂数据,需要使用JSON对象嵌套
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JSON的嵌套</title>
	</head>
	<body>
	</body>
</html>

<script type="text/javascript">
	var person = {
		"name": "张三",
		"age": 20,
		"car": {
			"color": "白色",
			"price": 2000
		},
		"arr": [20, 30, 60, 100]
	}
	//取出2000
	var v = person.car.price;
	alert(v);
	//取出100
	var vv = person.arr[3];
	alert(vv);

	//JSON数组:数组中的每一个元素是JSON对象
	var jsonArr = [{
		"name": "张三",
		"age": 20,
		"car": {
			"color": "白色",
			"price": 2000
		},
		"arr": [20, 30, 60, 100]
	},{
		"name": "李四",
		"age": 22,
		"car": {
			"color": "黑色",
			"price": 3000
		},
		"arr": [20, 30, 60, 100]
	},{
		"name": "王五",
		"age": 30,
		"car": {
			"color": "红色",
			"price": 5000
		},
		"arr": [20, 30, 60, 99900]
	}]
	//取出99900
	var num=jsonArr[2].arr[3];
		alert(num);
</script>

5.JSON对象和JSON字符串的互转

网络中数据的传输都以JSON对象格式进行传输,因为轻巧,容易阅读
后台往前台传输,以JSON封装好进行传输,前台接收到后进行解析展示到页面上

JS把数据当作对象,其他语言当作字符串
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>JSON对象的JSON字符串的互转</title>
	</head>
	<body>
	</body>
</html>
<script type="text/javascript">
	//定义JSON对象
	var person = {
		"name": "张三",
		"age": 24
	}
	//alert(person.name);
	//定义JSON字符串:
	//var student ="{'name':'name','age': 24}"; //错误的JSON字符串格式
	//注意:JSON字符串,外面用单引号引起来,里面键用双引号引起来。
	var student = '{"name": "张三","age": 24}';

	//先把JSON字符串转换成JSON对象才能去键找值
	var s = JSON.parse(student);
	alert(s.name);

	//前台给后台提交数据时,会以JSON字符串来提交给后台
	var person2 = {
		"name": "张三",
		"age": 24
	}

	//JSON对象转换为JSON字符串
	//JSON字符串是这种紧凑格式,不要弄成漂亮的格式
	var jsonStr = JSON.stringify(person2);
	alert(jsonStr);
</script>

四.ajax异步提交

通常提交数据时,会提交整个页面上的所有表单项,如姓名,年龄,身份证号,手机号等;但是如果
	姓名已经存在,整个表单已经填好的数据将会全部刷新,用户体验差;ajax可以对网页的某部分进行更新。

AJAX = 异步 JavaScript 和 XML。
	
	AJAX 是一种用于创建快速动态网页的技术。
	
	通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
	
	传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
	
	有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="myDiv">
			
		</div>
	</body>
</html>
<script type="text/javascript">
	/* 什么是 AJAX ?
	AJAX = 异步 JavaScript 和 XML。
	
	AJAX 是一种用于创建快速动态网页的技术。
	
	通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
	
	传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
	
	有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
 */
	//1.创建 异步请求对象
	var xmlhttp;
	xmlhttp = new XMLHttpRequest();
	//2.向服务器发送请求
	//如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
	//3.发送请求
	/* 
	method:请求的类型;GET 或 POST 
	url:文件在服务器上的位置 ,后台接口地址
	async:true(异步)或 false(同步) */

	xmlhttp.open("GET", "http://wthrcdn.etouch.cn/weather_mini?city=西安", true);
	xmlhttp.send();

	//3.服务器响应
	//如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
	//在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
		//当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
	
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			//4.如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText;
			var jsonStr=xmlhttp.responseText;
			//console.log(jsonStr);
			//把JSON字符串,解析成JSON对象
			var obj=JSON.parse(jsonStr);
			//alert(obj.data.city);
			document.getElementById("myDiv").innerHTML=obj.data.city;
		}
	}
</script>

五.练习

1.二级联动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<select name="" id="sf" onchange="selectShen()">
			<option value="">--请选择省份--</option>
			<option value="">陕西</option>
			<option value="">河南</option>
		</select>
		<select name="" id="city">
			<option value="">--请选择城市--</option>
		</select>
	</body>
</html>
<script type="text/javascript">
	//获取对应的标签对象
	var shengFen = document.getElementById("sf");
	var citys = document.getElementById("city");

	//0 1 2
	//把省份对应的数据用二维数组来存储
	var data = [
		[],
		['西安', '宝鸡', '汉中', '商洛', '延安'],
		['郑州', '开封', '南阳', '安阳']
	];

	function selectShen() {
		//切换省份时,把之间的旧数据清空掉
		//citys.innerHTML="<option>--请选择城市--</option>";
		citys.length=1; //把下拉选项,只保留一项。
		//取出用户选择的那个省份的索引
		var index = shengFen.selectedIndex;
		//取出这省份所对应的城市的数组   陕西  1   ['西安', '宝鸡', '汉中', '商洛', '延安'],
		var arr = data[index];
		//遍历城市的数组,把城市填充到第二个下拉框中
		for (let i = 0; i < arr.length; i++) {
			//动态的创建option标签
			var op = document.createElement("option");
			//创建文本对象
			var cityName = document.createTextNode(arr[i]);
			//给op接设置内容
			op.appendChild(cityName);
			//把op放到select之间
			citys.appendChild(op);
		}
	}
</script>

在这里插入图片描述

2.三级联动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>三级联动</title>
		
	</head>
	<body>
		<select id="province" onchange="addCity(this.value);">
			<option value="-1">--请选择--</option>
			<option value="0">陕西</option>
			<option value="1">河南</option>
			<option value="2">湖北</option>
		</select>
		<select id="city" onchange="addCounty(this.value);">
			<option value="-1">--请选择--</option>
		</select>
		<select id="county">
			<option value="-1">--请选择--</option>
		</select>
	</body>
</html>

<script type="text/javascript">
		var citys=[
			["西安","汉中","宝鸡"],
			["郑州","南阳","信阳"],
			["武汉","荆州","随州"]
		];
		var countys=[
			[["西安1区","西安2区","西安3区"],["汉中1区","汉中2区","汉中3区"],["宝鸡1区","宝鸡2区","宝鸡3区"]],
			[["郑州1区","郑州2区","郑州3区"],["南阳1区","南阳2区","南阳3区"],["信阳1区","信阳2区","信阳3区"]],
			[["武汉1区","武汉2区","武汉3区"],["荆州1区","荆州2区","荆州3区"],["随州1区","随州2县","随州3区"]]
		];
		function addCitysOpt(text,value){
			//根据id获得city下拉框
			var city = document.getElementById("city");
			//创建下拉选项
			var opt = document.createElement("option");
			//分别赋值
			opt.text = text;
			opt.value = value;
			//将该节点添加到city下拉框节点中
			city.options.add(opt);
		}
		function addCountyOpt(text,value){
			//同上
			var county = document.getElementById("county");
			var opt = document.createElement("option");
			opt.text = text;
			opt.value = value;
			county.options.add(opt);
		}
		function addCity(value){
			//通过id获得省级元素
			var province = document.getElementById("province");
			//通过id获得市级元素
			var city = document.getElementById("city");
			//通过id获得县级元素
			var county = document.getElementById("county");
			//每次联动前,将联动下拉框的长度变为1;
			city.options.length = 1;
			county.options.length = 1;
			//根据value循环citys数组,将对应城市一一添加进城市下拉框。
			for(var i = 0 ; i< citys[value].length; i++){
				addCitysOpt(citys[value][i],i);
			}
		}
		function addCounty(value){
			//同上
			var province = document.getElementById("province");
			var city = document.getElementById("city");
			var county = document.getElementById("county");
			p_value = province.value;
			county.options.length = 1;
			for(var i = 0;i<countys[p_value][value].length;i++){
				addCountyOpt(countys[p_value][value][i],i);
			}
		}
</script>

3.轮播图

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#box {
				width: 230px;
				height: 320px;
				border: 1px black solid;
				/* 溢出层的范围隐藏掉 */
				overflow: hidden;
			}

			#content {
				width: 920px;
				height: 320px;
				/* 过渡动画 */
				transition: margin-left 1s;
			}

			#d1 {
				width: 230px;
				height: 320px;
				background-image: url(img/main02_centent_01.png);
				float: left;
			}

			#d2 {
				width: 230px;
				height: 320px;
				background-image: url(img/main02_centent_02.png);
				float: left;
			}

			#d3 {
				width: 230px;
				height: 320px;
				background-image: url(img/main02_centent_03.png);
				float: left;
			}

			#d4 {
				width: 230px;
				height: 320px;
				background-image: url(img/main02_centent_04.png);
				float: left;
			}

			#dots {
				position: absolute;
				width: 230px;
				margin-top: 300px;
				margin-left: auto;
				/* border: 1px black solid; */
				display: flex;
				justify-content: center;
			}

			.dot {
				width: 14px;
				height: 14px;
				border: 1px black solid;
				border-radius: 7px;
				float: left;
				margin-left: 10px;
				font-size: 10px;
				color: white;
				background: grey;
				text-align: center;
			}

			.dot:hover {
				cursor: pointer;
			}
		</style>
	</head>
	<body>
		<div id="box" onmouseover="stopScroll()" onmouseout="startScroll()">
			<!-- 小圆点 -->
			<div id="dots">
				<div id="dot1" class="dot">1</div>
				<div id="dot2" class="dot">2</div>
				<div id="dot3" class="dot">3</div>
				<div id="dot4" class="dot">4</div>
			</div>
			<div id="content">
				<div id="d1">

				</div>
				<div id="d2">

				</div>
				<div id="d3">

				</div>
				<div id="d4">

				</div>
			</div>
		</div>
	</body>
</html>
<script type="text/javascript">
	//滚动的函数
	var content = document.getElementById("content");
	var count = 0;
	var tiemID;
	//获取所有的小圆点
	var dots=document.getElementsByClassName("dot");
	//设置第一张的对应的小圆点为红色
	dots[0].style.background="red";
	
	//随着图片的滚动,设置对应的小圆点的颜色为红色

	function scroll() {
		count++
		if (count == 4) {
			count = 0;
		}
		//设置小圆点颜色之前,清空掉之前的颜色。
		clearColor();
		dots[count].style.background="red";
		content.style.marginLeft = (-1 * 230 * count) + "px";
	}
	//使用循环定时器调用滚动函数
	tiemID = window.setInterval('scroll()', 2000)

	//鼠标移上,停止滚动
	function stopScroll() {
		//清除定时器
		clearInterval(tiemID);
	}
	//鼠标移出恢复定时器
	function startScroll() {
		tiemID = window.setInterval('scroll()', 2000);
	}
	//清空小圆点颜色。
	function clearColor(){
		for(var i=0;i<dots.length;i++){
			dots[i].style.background="grey";
		}
	}
	
	//作业:点击对应的序号,跳转到对应的图片。
	
	//鼠标点击指定序号切换到指定图片
	for (var i = 0; i < dots.length; i++) {
		dots[i].id = i;
		dots[i].onmousedown = function() {
			scroll(this.id);
			//this.className = 'on';
		}
	}
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值