JS

JS开发: 是一门脚本语言,由浏览器来解释执行,不需要经过编译
JS的组成:

ECMAScript : 核心部分 ,定义js的语法规范

DOM: document Object Model 文档对象模型 , 主要是用来管理页面的

BOM : Browser Object Model 浏览器对象模型, 前进,后退,页面刷新, 地址栏, 历史记录, 屏幕宽高

JS的语法:

变量弱类型: var i = true

区分大小写

语句结束之后的分号 ,可以有,也可以没有

写在script标签

JS的数据类型:
  • 基本类型
    • string
    • number
    • boolean
    • undefine
    • null
  • 引用类型
    • 对象, 内置对象
  • 类型转换
    • js内部自动转换
JS的运算符和语句:
  • 运算符和java 一样
    • “===” 全等号: 值和类型都必须相等
    • == 值相等就可以了
  • 语句和java 一样
JS的输出
  • alert() 直接弹框
  • document.write() 向页面输出
  • console.log() 向控制台输出
  • innerHTML: 向页面输出
JS声明变量: var 变量的名字;
JS声明函数: function 函数的名称(参数的名字){}
JS开发的步骤:
1. 确定事件
2. 事件要触发函数,所以我们是要声明函数
3. 函数里面通常是去做一些交互才操作,  弹框, 修改页面内容,动态去添加一些东西

以下通过案例来学习:

1.切换图片

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
			/*
				1. 事件: 点击事件 onclick
				2. 事件要触发函数: changeImg
				3. 在函数中
			*/
			function changeImg(){
//				alert("要切换了")
				var img = document.getElementById("img1");
				img.src = "img/2.jpg";
			}
</script>
</head>
<body>
	<input type="button" value="点击切换图片" onclick="changeImg()" />
	<br />
	<img src="img/1.jpg" id="img1" />
</body>
</html>

2.定时器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
		<script>
			//window 对象是一个最顶层对象
//			window.setInterval("alert('123');",2000);
			function test(){
				console.log("setInterval 调用了");
			}
//			setInterval("test()",2000);
//			setTimeout("test()",2000);
			var timerID;
			function startDinshiqi(){
//				timerID = setInterval("test()",2000);
				timerID = setTimeout("test()",3000);
			}
			
			function stopDingshiqi(){
//				clearInterval(timerID);
				clearTimeout(timerID);
			}
			
		</script>
</head>
<body>
	<input type="button" value="开启定时器" onclick="startDinshiqi()" /><br />
	<input type="button" value="取消定时器" onclick="stopDingshiqi()"/><br />
</body>
</html>

3.图片自动轮播

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<!--
			1. 确定事件: 文档加载完成的事件 onload
			2. 事件要触发 : init()
			3. 函数里面要做一些事情:(通常会去操作元素,提供交互)
			   1. 开启定时器: 执行切换图片的函数 changeImg()
			4.  changeImg()
			   1. 获得要切换图片的那个元素
		-->
		<script>
			var index = 0;
			
			function changeImg(){
				
				//1. 获得要切换图片的那个元素
				var img = document.getElementById("img1");
				
				//计算出当前要切换到第几张图片
				var curIndex = index%3 + 1;  //0,1,2 
				img.src="img/"+curIndex+".jpg";  //1,2,3
				//每切换完,索引加1
				index = index + 1;
			}
			
			function init(){
				
				setInterval("changeImg()",1000);
			}
			
		</script>
	</head>
	<body onload="init()">
		<img src="img/1.jpg" width="100%" id="img1"/>
	</body>
</html>

4.显示和隐藏图片:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
		//文档加载顺序
//			var img = document.getElementById("img1");
			
			function hideImg(){
				var img = document.getElementById("img1");
				img.style.display = "none";
			}
			
			function showImg(){
				var img = document.getElementById("img1");
				img.style.display = "block";
			}
		</script>
	</head>
	<body>
		<input type="button" value="显示" onclick="showImg()" />
		<input type="button" value="隐藏" onclick="hideImg()" /><br />
		
		<img src="img/1.jpg" id="img1" />
	</body>
</html>

5.定时弹出广告:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!--
			1. 确定事件: 页面加载完成的事件 onload
			2. 事件要触发函数:  init()
			3. init函数里面做一件事: 
			   1. 启动一个定时器 : setTimeout() 
			   2. 显示一个广告
			      1. 再去开启一个定时5秒钟之后,关闭广告
		-->
		
		<script>
		
			function init(){
				setTimeout("showAD()",3000);
			}
			
			function showAD(){
				//首先要获取要操作的img
				var img = document.getElementById("img1");
				//显示广告
				img.style.display = "block";
				
				//再开启定时器,关闭广告
				setTimeout("hideAD()",3000);
			}
			
			function hideAD(){
				//首先要获取要操作的img
				var img = document.getElementById("img1");
				//隐藏广告
				img.style.display = "none";
			}
		</script>
	</head>
	<body onload="init()">
		<img id="img1" src="img/1.jpg" width="100%" style="display: none;"/>
	</body>
</html>

6.表单校验

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			引入外部的js文件
		-->
		<script type="text/javascript" src="js/regutils.js" ></script>
		<script>
			/*
				1. 确定事件 : onfocus
				2. 事件要驱动函数
				3. 函数要干一些事情: 修改span的内容
			*/
			function showTips(spanID,msg){
				//首先要获得要操作元素 span
				var span = document.getElementById(spanID);
				span.innerHTML = msg;
			}
			/*
				校验用户名:
				1.事件: onblur  失去焦点
				2.函数: checkUsername()
				3.函数去显示校验结果
			*/
			function checkUsername(){
				//获取用户输入的内容
				var uValue = document.getElementById("username").value;
				//对输入的内容进行校验
				//获得要显示结果的span
				var span = document.getElementById("span_username");
				if(uValue.length < 6){
					//显示校验结果
					span.innerHTML = "<font color='red' size='2'>对不起,太短</font>";
					return false;
				}else{
					span.innerHTML = "<font color='red' size='2'>恭喜您,可用</font>";
					return true;
				}
			}
			
			/*
			 密码校验
			 */
			function checkPassword(){
				//获取密码输入
				var uPass = document.getElementById("password").value;
				
				var span = document.getElementById("span_password");
				
				//对密码输入进行校验
				if(uPass.length < 6){
					span.innerHTML = "<font color='red' size='2'>对不起,太短</font>";
					return false;
				}else{
					span.innerHTML = "<font color='red' size='2'>恭喜您,够用</font>";
					return true;
				}
			}
			
			/*
			 确认密码校验
			 * */
			function checkRePassword(){
				//获取密码输入
				var uPass = document.getElementById("password").value;
				
				//获取确认密码输入
				var uRePass = document.getElementById("repassword").value;
				
				var span = document.getElementById("span_repassword");
				
				//对密码输入进行校验
				if(uPass != uRePass){
					span.innerHTML = "<font color='red' size='2'>对不起,两次密码不一致</font>";
					return false;
				}else{
					span.innerHTML = "";
					return true;
				}
			}
			
			/*
			 校验邮箱
			 * */
			function checkMail(){
				var umail = document.getElementById("email").value;
				
				var flag = checkEmail(umail);
				
				var span = document.getElementById("span_email");
				//对邮箱输入进行校验
				if(flag){
					span.innerHTML = "<font color='red' size='2'>恭喜您,可用</font>";
					return true;
				}else{
					span.innerHTML = "<font color='red' size='2'>对不起,邮箱格式貌似有问题</font>";
					return false;
				}
			}
			
			function checkForm(){
				var flag = checkUsername() && checkPassword() && checkRePassword() && checkMail();
				return flag;
			}
			
		</script>
	</head>
	<body>
		<form action="jstest3.html" onsubmit="return checkForm()" >
			用户名:<input type="text" id="username" onfocus="showTips('span_username','用户名长度不能小于6')" onblur="checkUsername()" onkeyup="checkUsername()" /><span id="span_username"></span><br />
			密码:<input type="password" id="password" onfocus="showTips('span_password','密码长度不能小于6')" onblur="checkPassword()" onkeyup="checkPassword()"/><span id="span_password"></span><br />
			确认密码:<input type="password" id="repassword" onfocus="showTips('span_repassword','两次密码必须一致')" onblur="checkRePassword()" onkeyup="checkRePassword()" /><span id="span_repassword"></span><br />
			邮箱:<input type="text" id="email" onfocus="showTips('span_email','邮箱格式必须正确')" onblur="checkMail()" /><span id="span_email"></span><br />
			手机号:<input type="text" id="text" /><br />
			
			<input type="submit" value="提交" />
		</form>
	</body>
</html>

7.表格隔行换色和实现全选全不选

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			1. 确定事件: 文档加载完成 onload
			2. 事件要触发函数: init()
			3. 函数:操作页面的元素
					要操作表格中每一行
					动态的修改行的背景颜色
		-->
		<script >
			function init(){
				//得到表格
				var tab = document.getElementById("tab");
				//得到表格中每一行
				var rows = tab.rows;
				//便利所有的行,然后根据奇数 偶数
				for(var i=1; i < rows.length; i++){
					var row = rows[i];  //得到其中的某一行
					if(i%2==0){
						row.bgColor = "blue";
					}else{
						row.bgColor = "red"
					}
				}
			}
			
			/*
				全选和全不选步骤分析:
				 1.确定事件: onclick 单机事件
				 2.事件触发函数: checkAll()
				 3.函数要去做一些事情:
				 	获得当前第一个checkbox的状态
				 	获得所有分类项的checkbox
				 	修改每一个checkbox的状态
			*/
			
			function checkAll(){
//				获得当前第一个checkbox的状态
				var check1 = document.getElementById("check1");
				//得到当前checked状态
				var checked = check1.checked;
//				 	获得所有分类项的checkbox
//				var checks = document.getElementsByTagName("input");
				var checks = document.getElementsByName("checkone");
//				alert(checks.length);
				for(var i = 0; i < checks.length; i++){
//				 	修改每一个checkbox的状态
					var checkone = checks[i];
					checkone.checked = checked;
				}
			}
		</script>
	</head>
	<body onload="init()">
		<table border="1px" width="600px" id="tab">
			<tr >
				<td>
					<input type="checkbox" onclick="checkAll()" id="check1" />
				</td>
				<td>分类ID</td>
				<td>分类名称</td>
				<td>分类商品</td>
				<td>分类描述</td>
				<td>操作</td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="checkone" />
				</td>
				<td>1</td>
				<td>手机数码</td>
				<td>华为,小米,尼康</td>
				<td>黑马数码产品质量最好</td>
				<td>
					<a href="#">修改</a>|<a href="#">删除</a>
				</td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="checkone"/>
				</td>
				<td>2</td>
				<td>体育用品</td>
				<td>篮球,足球,网球</td>
				<td>大品牌</td>
				<td><a href="#">修改</a>|<a href="#">删除</a></td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="checkone"/>
				</td>
				<td>3</td>
				<td>电脑办公</td>
				<td>联想,小米</td>
				<td>笔记本特卖</td>
				<td><a href="#">修改</a>|<a href="#">删除</a></td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="checkone"/>
				</td>
				<td>4</td>
				<td>馋嘴零食</td>
				<td>辣条,麻花,黄瓜</td>
				<td>年货</td>
				<td><a href="#">修改</a>|<a href="#">删除</a></td>
			</tr>
			<tr>
				<td>
					<input type="checkbox" name="checkone"/>
				</td>
				<td>5</td>
				<td>床上用品</td>
				<td>床单,被套,四件套</td>
				<td>棉质</td>
				<td><a href="#">修改</a>|<a href="#">删除</a></td>
			</tr>
		</table>
	</body>
</html>

8.简单的DOM添加节点操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			
			/*动态添加 :   <p>文本</p> */
			function dianwo(){
				var div = document.getElementById("div1");
				//创建元素节点
				var p = document.createElement("p");  // <p></p>
				//创建文本节点
				var textNode = document.createTextNode("p段落文本内容");//  文本内容
				
				//将p 和文本内容关联起来
				p.appendChild(textNode);  //  <p>文本</p> 
				
				//将P添加到目标div中
				div.appendChild(p);
			}
			
		</script>
	</head>
	<body>
		<input type="button" value="点我,添加P" onclick="dianwo()" />
		<!--一会动态的往这个Div中添加节点-->
		<div id="div1">
			
		</div>
	</body>
</html>

9.省市下拉框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			/*
				准备工作 : 准备数据
			*/
			var provinces = [
				["深圳市","东莞市","惠州市","广州市"],
				["长沙市","岳阳市","株洲市","湘潭市"],
				["厦门市","福州市","漳州市","泉州市"]
			];
			/*
				1. 确定事件:  onchange
				2. 函数: selectProvince()
				3. 函数里面要搞事情了
					得到当前操作元素
					得到当前选中的是那一个省份
					从数组中取出对应的城市信息
					
					动态创建城市元素节点
					添加到城市select中
					
			*/
			function selectProvince(){
				var province = document.getElementById("province");
				//得到当前选中的是哪个省份
				//alert(province.value);
				var value = province.value;
				//从数组中取出对应的城市信息
				var cities = provinces[value];
				var citySelect = document.getElementById("city");
				//清空select中的option
				citySelect.options.length = 0;
				
				for (var i=0; i < cities.length; i++) {
//					alert(cities[i]);
					var cityText = cities[i]; 
					//动态创建城市元素节点   <option>东莞市</option>
					
					//创建option节点
					var option1 = document.createElement("option"); // <option></option>
					//创建城市文本节点
					var textNode = document.createTextNode(cityText) ;// 东莞市
					
					//将option节点和文本内容关联起来
					option1.appendChild(textNode);  //<option>东莞市</option>
					
//					添加到城市select中
					citySelect.appendChild(option1);
				}
				
			}
			
		</script>
	</head>
	<body>
		<!--选择省份-->
		<select onchange="selectProvince()" id="province">
			<option value="-1">--请选择--</option>
			<option value="0">广东省</option>
			<option value="1">湖南省</option>
			<option value="2">福建省</option>
		</select>
		<!--选择城市-->
		<select id="city"></select>
	</body>
</html>

10.左右选择项

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<!--
			步骤分析
				1. 确定事件: 点击事件 :onclick事件
				2. 事件要触发函数 selectOne
				3. selectOne要做一些操作
					(将左边选中的元素移动到右边的select中)
					1. 获取左边Select中被选中的元素
					2. 将选中的元素添加到右边的Select中就可以
		-->
		<script>
			
			function selectOne(){
//				1. 获取左边Select中被选中的元素
				var leftSelect = document.getElementById("leftSelect");
				var options = leftSelect.options;
				
				//找到右侧的Select
				var rightSelect = document.getElementById("rightSelect");
				//遍历找出被选中的option
				for(var i=0; i < options.length; i++){
					var option1 = options[i];
					if(option1.selected){
		//				2. 将选中的元素添加到右边的Select中就可以
						rightSelect.appendChild(option1);
					}
				}
			}
			
			//将左边所有的商品移动到右边
			function selectAll(){
//				1. 获取左边Select中被选中的元素
				var leftSelect = document.getElementById("leftSelect");
				var options = leftSelect.options;
				
				//找到右侧的Select
				var rightSelect = document.getElementById("rightSelect");
				//遍历找出被选中的option
				for(var i=options.length - 1; i >=0; i--){
					var option1 = options[i];
					rightSelect.appendChild(option1);
				}
			}
			
			
			
		</script>
	</head>
	<body>
		
		<table border="1px" width="400px">
			<tr>
				<td>分类名称</td>
				<td><input type="text" value="手机数码"/></td>
			</tr>
			<tr>
				<td>分类描述</td>
				<td><input type="text" value="这里面都是手机数码"/></td>
			</tr>
			<tr>
				<td>分类商品</td>
				<td>
					<!--左边-->
					<div style="float: left;">
						已有商品<br />
						<select multiple="multiple" id="leftSelect" ondblclick="selectOne()">
							<option>华为</option>
							<option>小米</option>
							<option>锤子</option>
							<option>oppo</option>
						</select>
						<br />
						<a href="#" onclick="selectOne()"> &gt;&gt; </a> <br />
						<a href="#" onclick="selectAll()"> &gt;&gt;&gt; </a>
					</div>
					<!--右边-->
					<div style="float: right;"> 
						未有商品<br />
						<select multiple="multiple" id="rightSelect">
							<option>苹果</option>
							<option>三星</option>
							<option>诺基亚</option>
							<option>波导</option>
						</select>
						<br />
						<a href="#"> &lt;&lt; </a> <br />
						<a href="#"> &lt;&lt;&lt; </a>
					</div>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="提交"/>
				</td>
			</tr>
		</table>
		
		
	</body>
</html>

JQuery

Jquery它是javascript的一个轻量级框架,对javascript进行封装,它提供了很多方便的选择器。供你快速定位到需要操作的元素上面去。还提供了很多便捷的方法。

Jquery它是一个库(框架),要想使用它,必须先引入:
jquery-1.8.3.js:一般用于学习阶段。
jquery-1.8.3.min.js:用于项目使用阶段

1.Jquery入门案例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS与JQ页面加载区别</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
	<script>
		window.onload = function(){
			alert("张三");
		}
		
		//传统的方式页面加载会存在覆盖问题,加载比JQ慢(整个页面加载完毕<包括里面的其它内容,比如图片>)
		window.onload = function(){
			alert("老王");
		}
		
		//JQ的几种表达方式
		
		//JQ的加载比JS加载要快!(当整个dom树结构绘制完毕就会加载)
		jQuery(document).ready(function(){
			alert("李四");
		});
		
		//JQ不存在覆盖问题,加载的时候是顺序执行
		$(document).ready(function(){
			alert("王五");
		});
		
		//简写方式
		$(function(){
			alert("汾九");
		});
		
	</script>
</head>
<body>

</body>
</html>

加载顺序:李四-王五-汾九-老王

2.JS和Jquery的获取

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
		<script>
			$(function(){
				//1.JS方式获取
				/*document.getElementById("btn").onclick= function(){
					location.href="jstest.html";
				}*/
				
				//2.JQ方式获取=====>>>$("#btn")
				$("#btn").click(function(){
					location.href="jstest.html"
				});
			});
		</script>
	</head>
	<body>
		<input type="button" value="点我" id="btn"/>
	</body>
</html>

3.Dom与JQ对象之间的转换

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
		<script>
			function write1(){
				//1.JS的DOM操作
				document.getElementById("span1").innerHTML="萌萌哒!";
				//DOM对象无法操作JQ对象里面属性和方法
				//document.getElementById("span1").html("萌萌哒!");
				
				var spanEle = document.getElementById("span1");
				
				//将DOM对象转换成JQ对象
				$(spanEle).html("思密达");
			}
		
			$(function(){
				$("#btn").click(function(){
					//JQ对象无法操作JS里面的属性和方法!!!
					//$("#span1").innerHTML="呵呵哒!"
					$("#span1").html("呵呵哒!");
					
					//JQ对象向DOM对象转换方式一
					$("#span1").get(0).innerHTML="美美哒!";
					
					//JQ对象向DOM对象转换方式二
					$("#span1")[0].innerHTML="棒棒哒!";
					
				});
			});
		</script>
	</head>
	<body>
		<input type="button" value="JS写入" onclick="write1()"/>
		<input type="button" value="JQ写入" id="btn"/><br />
		班长:<span id="span1">你好帅!</span>
	</body>
</html>

4.Jquery页面定时弹出广告

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
	<script>
		$(function(){
			//1.书写显示广告图片的定时操作
			time = setInterval("showAd()",3000);
		});
		
		//2.书写显示广告图片的函数
		function showAd(){
			//3.获取广告图片,并让其显示
			//$("#img2").show(1000);
			//$("#img2").slideDown(5000);
			$("#img2").fadeIn(4000);
			//4.清除显示图片定时操作
			clearInterval(time);
			//5.设置隐藏图片的定时操作
			time = setInterval("hiddenAd()",3000);
		}
		
		function hiddenAd(){
			//6.获取广告图片,并让其隐藏
			//$("#img2").hide();
			//$("#img2").slideUp(5000);
			$("#img2").fadeOut(6000);
			//7.清除隐藏图片的定时操作
			clearInterval(time);
		}
	</script>
</head>
<body>
<!--定时弹出广告图片位置-->
<img src="img/1.jpg" width="100%" style="display: none" id="img2"/>
</body>
</html>

5.toggle的使用(显示和隐藏)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
	<script>
		$(function(){
			$("#btn").click(function(){
				$("#img1").toggle();
			});
		});
	</script>
</head>
<body>
<input type="button" value="显示/隐藏" id="btn" /><br />|
<img src="img/1.jpg" width="100%" height="100%" id="img1"/>
</body>
</html>

6.选择器
1)基本选择器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>基本选择器</title>
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
<script>
	$(function(){
		$("#btn1").click(function(){
			$("#one").css("background-color","pink");
		});
		
		$("#btn2").click(function(){
			$(".mini").css("background-color","pink");
		});
		
		$("#btn3").click(function(){
			$("div").css("background-color","pink");
		});
		
		$("#btn4").click(function(){
			$("*").css("background-color","pink");
		});
		
		$("#btn5").click(function(){
			$("#two,.mini").css("background-color","pink");
		});
	});
</script>
			
</head>
<body>
	<input type="button" id="btn1" value="选择为one的元素"/>
	<input type="button" id="btn2" value="选择样式为mini的元素"/>
	<input type="button" id="btn3" value="选择所有的div元素"/>
	<input type="button" id="btn4" value="选择所有元素"/>
	<input type="button" id="btn5" value="选择id为two并且样式为mini的元素"/>
	<hr/>
	<div id="one">
		<div class="mini">
			111
		</div>
	</div>
	
	<div id="two">
		<div class="mini">
			222
		</div>
		<div class="mini">
			333
		</div>
	</div>
	
	<div id="three">
		<div class="mini">
			444
		</div>
		<div class="mini">
			555
		</div>
		<div class="mini">
			666
		</div>
	</div>
	
	<span id="four">
		
	</span>
</body>
</html>

2)层级选择器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>层级选择器</title>
<link rel="stylesheet" type="text/css" href="../../css/style.css" />
<script type="text/javascript" src="../../js/jquery-1.8.3.js"></script>
<script type="text/javascript">
	$(function() {
		$("#btn1").click(function() {
			$("body div").css("background-color", "gold");
		});

		$("#btn2").click(function() {
			$("body>div").css("background-color", "gold");
		});

		$("#btn3").click(function() {
			$("#two+div").css("background-color", "gold");
		});

		$("#btn4").click(function() {
			$("#one~div").css("background-color", "gold");
		});
	});
</script>

</head>
<body>
	<input type="button" id="btn1" value="选择body中的所有的div元素" />
	<input type="button" id="btn2" value="选择body中的第一级的孩子" />
	<input type="button" id="btn3" value="选择id为two的元素的下一个元素" />
	<input type="button" id="btn4" value="选择id为one的所有的兄弟元素" />

	<hr />
	<div id="one">
		<div class="mini">111</div>
	</div>

	<div id="two">
		<div class="mini">222</div>
		<div class="mini">333</div>
	</div>

	<div id="three">
		<div class="mini">444</div>
		<div class="mini">555</div>
		<div class="mini">666</div>
	</div>

	<span id="four"> </span>
</body>
</html>

3)基本过滤选择器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>过滤选择器</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
	$(function() {
		$("#btn1").click(function() {
			$("body div:first").css("background-color", "red");
		});

		$("#btn2").click(function() {
			$("body div:last").css("background-color", "red");
		});

		$("#btn3").click(function() {
			$("body div:odd").css("background-color", "red");
		});

		$("#btn4").click(function() {
			$("body div:even").css("background-color", "red");
		});
	});
</script>


</head>
<body>
	<input type="button" id="btn1" value="body中的第一个div元素" />
	<input type="button" id="btn2" value="body中的最后一个div元素" />
	<input type="button" id="btn3" value="选择body中的奇数的div" />
	<input type="button" id="btn4" value="选择body中的偶数的div" />

	<hr />
	<div id="one">
		<div class="mini">111</div>
	</div>

	<div id="two">
		<div class="mini">222</div>
		<div class="mini">333</div>
	</div>

	<div id="three">
		<div class="mini">444</div>
		<div class="mini">555</div>
		<div class="mini">666</div>
	</div>

	<span id="four"> </span>
</body>
</html>

4)属性选择器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>属性选择器</title>
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
	$(function() {
		$("#btn1").click(function() {
			$("div[id]").css("background-color", "red");
		});

		$("#btn2").click(function() {
			$("div[id='two']").css("background-color", "red");
		});

	});
</script>

</head>
<body>
	<input type="button" id="btn1" value="选择有id属性的div" />
	<input type="button" id="btn2" value="选择有id属性的值为two的div" />

	<hr />
	<div id="one">
		<div class="mini">111</div>
	</div>

	<div id="two">
		<div class="mini">222</div>
		<div class="mini">333</div>
	</div>

	<div id="three">
		<div class="mini">444</div>
		<div class="mini">555</div>
		<div class="mini">666</div>
	</div>

	<span id="four"> </span>
</body>
</html>

5)表单选择器

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单选择器</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
$(function(){
	$("#btn1").click(function() {
		$(":input").css("background-color","#FF0000");
	});
	$("#btn2").click(function() {
		//$(":password"),$(":radio"),$(":checkbox"),$(":submit"),$(":image"),$(":reset"),$(":file"),$("input:hidden")同理
		//$(":button")满足<input type="button" />,<button></button> 
		$(":text").css("background-color","#FF0000");
	});
	$("#btn3").click(function(){
		$("select option:selected").css("background-color","chartreuse");
		alert($("option:selected").size());
	});
})
</script>
</head>
<body>
<!-- 以下所有都满足 -->
<input type="button" id="btn1" value="选择所有input元素" />
<!-- <input type="text" />满足 -->
<input type="button" id="btn2" value="选择文本框" />
<input type="button" id="btn3" value="选择下拉框" />
<br/>
<form>
	文本框:<input type="text" /><br />
	复选框:<input type="checkbox" /><br />
	单选框:<input type="radio" /><br />
	图片:<input type="image" /><br />
	文件:<input type="file" /><br />
	提交:<input type="submit" />
	重置:<input type="reset" /><br />
	密码:<input type="password" /><br />
	按钮:<input type="button" /><br />
	隐藏:<input type="hidden" /><br />
	<select multiple="multiple">
	  <option value="1">Flowers</option>
	  <option value="2" selected="selected">Gardens</option>
	  <option value="3">Trees</option>
	</select><br/>
	<textarea>多行文本框</textarea><br />
	<button>按钮</button>
</form>
</body>
</html>

7.JQuery完成表格隔行换色

<!DOCTYPE html>
<html>
<head>
<title>使用jQuery完成表格隔行换色</title>
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
	//1.页面加载
	$(function() {
		/*//2.获取tbody下面的偶数行并设置背景颜色
		$("tbody tr:even").css("background-color","yellow");
		//3.获取tbody下面的奇数行并设置背景颜色
		$("tbody tr:odd").css("background-color","green");*/

		//2.获取tbody下面的偶数行并设置背景颜色
		$("tbody tr:even").addClass("even");
		$("tbody tr:even").removeClass("even");
		//3.获取tbody下面的奇数行并设置背景颜色
		$("tbody tr:odd").addClass("odd");
	});
</script>

</head>
<body>
	<table border="1" width="500" height="50" align="center" id="tbl"
		id="tbl">
		<thead>
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>年龄</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>1</td>
				<td>张三</td>
				<td>22</td>
			</tr>
			<tr>
				<td>2</td>
				<td>李四</td>
				<td>25</td>
			</tr>
			<tr>
				<td>3</td>
				<td>王五</td>
				<td>27</td>
			</tr>
			<tr>
				<td>4</td>
				<td>赵六</td>
				<td>29</td>
			</tr>
			<tr>
				<td>5</td>
				<td>田七</td>
				<td>30</td>
			</tr>
			<tr>
				<td>6</td>
				<td>汾九</td>
				<td>20</td>
			</tr>
		</tbody>
	</table>
</body>
</html>

8.JQuery完成复选框的全选和全不选

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用jQuery完成复选框的全选和全不选</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
	$(function() {
		$("#select").click(function() {
			//获取下面所有的 复选框并将其选中状态设置跟编码的前端 复选框保持一致。
			//attr方法与JQ的版本有关,在1.8.3及以下有效。
			//$("tbody input").attr("checked",this.checked);
			$("tbody input").prop("checked", this.checked);
		});
		
		$("#checkAll").click(function() {
			var ischecked = this.checked;
			$("input[name='hobby']").each(function(){
				this.checked = ischecked;
			});
		});
	});
</script>

</head>
<body>
	<table border="1" width="500" height="50" align="center" id="tbl">
		<thead>
			<tr>
				<td colspan="4"><input type="button" value="添加" /> <input
					type="button" value="删除" /></td>
			</tr>
			<tr>
				<th><input type="checkbox" id="select"></th>
				<th>编号</th>
				<th>姓名</th>
				<th>年龄</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>1</td>
				<td>张三</td>
				<td>22</td>
			</tr>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>2</td>
				<td>李四</td>
				<td>25</td>
			</tr>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>3</td>
				<td>王五</td>
				<td>27</td>
			</tr>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>4</td>
				<td>赵六</td>
				<td>29</td>
			</tr>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>5</td>
				<td>田七</td>
				<td>30</td>
			</tr>
			<tr>
				<td><input type="checkbox" class="selectOne" /></td>
				<td>6</td>
				<td>汾九</td>
				<td>20</td>
			</tr>
		</tbody>
	</table>
	
	<input type="checkbox" id="checkAll"/>全选<br/>
	<input type="checkbox" name="hobby" value="足球"/>足球<br/>
	<input type="checkbox" name="hobby" value="篮球"/>篮球<br/>
	<input type="checkbox" name="hobby" value="网球"/>网球<br/>
</body>
</html>


9.省市下拉框

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script>
	$(function() {
		//2.创建二维数组用于存储省份和城市
		var cities = new Array(3);
		cities[0] = new Array("武汉市", "黄冈市", "襄阳市", "荆州市");
		cities[1] = new Array("长沙市", "郴州市", "株洲市", "岳阳市");
		cities[2] = new Array("石家庄市", "邯郸市", "廊坊市", "保定市");
		cities[3] = new Array("郑州市", "洛阳市", "开封市", "安阳市");

		$("#province").change(function() {
			//10.清除第二个下拉列表的内容
			$("#city").empty();

			//1.获取用户选择的省份
			var val = this.value;
			//alert(val);
			//3.遍历二维数组中的省份
			$.each(cities, function(i, n) {
				//alert(i+":"+n);
				//4.判断用户选择的省份和遍历的省份
				if (val == i) {
					//5.遍历该省份下的所有城市
					$.each(cities[i], function(j, m) {
						//alert(m);
						//6.创建城市文本节点
						var textNode = document.createTextNode(m);
						//7.创建option元素节点
						var opEle = document.createElement("option");
						//8.将城市文本节点添加到option元素节点中去
						$(opEle).append(textNode);
						//9.将option元素节点追加到第二个下拉列表中去
						$(opEle).appendTo($("#city"));
					});
				}
			});

		});
	});
</script>
</head>
<body>
	<select id="province">
		<option>--请选择--</option>
		<option value="0">湖北</option>
		<option value="1">湖南</option>
		<option value="2">河北</option>
		<option value="3">河南</option>
	</select>
	<select id="city">

	</select>
</body>
</html>

10.JQuery实现左右选择

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>下拉列表左右选择</title>
		<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
		<script>
			$(function(){
				/*1.选中单击去右边*/
				$("#selectOneToRight").click(function(){
					$("#left option:selected").appendTo($("#right"));
				});
				
				/*2.单击全部去右边*/
				$("#selectAllToRight").click(function(){
					$("#left option").appendTo($("#right"));
				});
				
				/*3.选中双击去右边*/
				$("#left option").dblclick(function(){
					$("#left option:selected").appendTo($("#right"));
				});
			});
		</script>
	
	</head>
	<body>
		<table border="1" width="600" align="center">
			<tr>
				<td>
					分类名称
				</td>
				<td>
					<input type="text" name="cname" value="手机数码"/>
				</td>
			</tr>
			<tr>
				<td>
					分类描述
				</td>
				<td>
					<textarea name="cdesc" rows="4" cols="20">手机数码类商品</textarea>
				</td>
			</tr>
			<tr>
				<td>
					分类商品
				</td>
				<td>
					<span style="float: left;">
						<font color="green" face="宋体">已有商品</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="left">
							<option>IPhone6s</option>
							<option>小米4</option>
							<option>锤子T2</option>
						</select>
						<p><a href="#" style="padding-left: 20px;" id="selectOneToRight">&gt;&gt;</a></p>
						<p><a href="#" style="padding-left: 20px;" id="selectAllToRight">&gt;&gt;&gt;</a></p>
					</span>
					<span style="float: right;">
						<font color="red" face="宋体">未有商品</font><br/>
						<select multiple="multiple" style="width: 100px;height: 200px;" id="right">
							<option>三星Note3</option>
							<option>华为note4</option>
						</select>
						<p><a href="#" >&lt;&lt;</a></p>
						<p><a href="#" >&lt;&lt;&lt;</a></p>
					</span>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type='submit' value="修改"/>
				</td>
			</tr>
		</table>
	</body>
</html>

11.表单验证
validate.js常用来表单验证,validate.js是JQuery的一个插件
简单的表单验证:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>validate入门案例</title>
		<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
		<!--validate.js是建立在jquery之上的,所以得先导入jquery的类库-->
		<script type="text/javascript" src="js/jquery.validate.min.js" ></script>
		<!--引入国际化js文件-->
		<script type="text/javascript" src="../../js/messages_zh.js" ></script>
		<script>
			$(function(){
				$("#checkForm").validate({
					rules:{
						username:{
							required:true,
							minlength:6
						},
						password:{
							required:true,
							digits:true,
							minlength:6
						}
					},
					messages:{
						username:{
							required:"用户名不能为空!",
							minlength:"用户名不得少于6位!"
						},
						password:{
							required:"密码不能为空!",
							digits:"密码必须是整数!",
							minlength:"密码不得少于6位!"
						}
					}
				});
			});
		</script>
		
	</head>
	<body>
		<form action="#" id="checkForm">
			用户名:<input type="text" name="username" /><br />
			密码:<input type="password" name="password"/><br />
			<input type="submit"/>
		</form>
	</body>
</html>

在这里插入图片描述
检验方式:
在这里插入图片描述
在这里插入图片描述
表单验证:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网站注册页面</title>
<style>
#contanier {
	border: 0px solid white;
	width: 1300px;
	margin: auto;
}

#top {
	border: 0px solid white;
	width: 100%;
	height: 50px;
}

#menu {
	border: 0px solid white;
	height: 40px;
	background-color: black;
	padding-top: 10px;
	margin-bottom: 15px;
	margin-top: 10px;
}

.top {
	border: 0px solid white;
	width: 405px;
	height: 100%;
	float: left;
	padding-left: 25px;
}

#top1 {
	padding-top: 15px;
}

#bottom {
	margin-top: 13px;
	text-align: center;
}

#form {
	height: 500px;
	padding-top: 70px;
	background-image: url(img/regist_bg.jpg);
	margin-bottom: 10px;
}

a {
	text-decoration: none;
}

label.error {
	background: url(img/unchecked.gif) no-repeat 10px 3px;
	padding-left: 30px;
	font-family: georgia;
	font-size: 15px;
	font-style: normal;
	color: red;
}

label.success {
	background: url(img/checked.gif) no-repeat 10px 3px;
	padding-left: 30px;
}

#father {
	border: 0px solid white;
	padding-left: 307px;
}

#form2 {
	border: 5px solid gray;
	width: 660px;
	height: 450px;
}
</style>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<!--引入validate插件js文件-->
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<!--引入国际化js文件-->
<script type="text/javascript" src="js/messages_zh.js"></script>
<script>
	$(function() {
		$("#registForm").validate({
			rules : {
				user : {
					required : true,
					minlength : 3
				},
				password : {
					required : true,
					digits : true,
					minlength : 6
				},
				repassword : {
					required : true,
					equalTo : "[name='password']"
				},
				email : {
					required : true,
					email : true
				},
				username : {
					required : true,
					maxlength : 5
				},
				sex : {
					required : true
				}
			},
			messages : {
				user : {
					required : "用户名不能为空!",
					minlength : "用户名不得少于3位!"
				},
				password : {
					required : "密码不能为空!",
					digits : "密码必须是整数!",
					minlength : "密码不得少于6位!"
				},
				repassword : {
					required : "确认密码不能为空!",
					equalTo : "两次输入密码不一致!"
				},
				email : {
					required : "邮箱不能为空!",
					email : "邮箱格式不正确!"
				},
				username : {
					required : "姓名不能为空!",
					maxlength : "姓名不得多于5位!"
				},
				sex : {
					required : "性别必须勾选!"
				}
			},
			errorElement : "label", //用来创建错误提示信息标签,validate插件默认的就是label
			success : function(label) { //验证成功后的执行的回调函数
				//label指向上面那个错误提示信息标签label
				label.text(" ") //清空错误提示消息
				.addClass("success"); //加上自定义的success类
			}
		});
	});
</script>
</head>
<body>
	<div id="contanier">
		<div id="top">
			<div class="top">
				<img src="img/logo2.png" height="47px" />
			</div>
			<div class="top">
				<img src="img/header.png" height="45px" />
			</div>
			<div class="top" id="top1">
				<a href="#">登录</a> <a href="#">注册</a> <a href="#">购物车</a>
			</div>
		</div>
		<div id="menu">
			<a href="#"><font size="5" color="white">首页</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#"><font color="white">电脑办公</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#"><font color="white">手机数码</font></a>&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#"><font color="white">鞋靴箱包</font></a>
		</div>
		<div id="form">
			<form action="#" method="get" id="registForm">
				<div id="father">
					<div id="form2">
						<table border="0px" width="100%" height="100%" align="center"
							cellpadding="0px" cellspacing="0px" bgcolor="white">
							<tr>
								<td colspan="2">
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font
									size="5">会员注册</font>&nbsp;&nbsp;&nbsp;USER REGISTER
								</td>
							</tr>
							<tr>
								<td width="180px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <label
									for="user">用户名</label>
								</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="text" name="user" size="35px" id="user" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 密码</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="password" name="password" size="35px" id="password" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 确认密码</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="password" name="repassword" size="35px" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Email</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="text" name="email" size="35px" id="email" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 姓名</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="text" name="username" size="35px" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 性别</td>
								<td><span style="margin-right: 155px;"> <em
										style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
										type="radio" name="sex" value="男" />男 <input type="radio"
										name="sex" value="女" />女<em></em> <label for="sex"
										class="error" style="display: none;"></label>
								</span></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 出生日期</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="text" name="birthday" size="35px" /></td>
							</tr>
							<tr>
								<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 验证码</td>
								<td><em style="color: red;">*</em>&nbsp;&nbsp;&nbsp;<input
									type="text" name="yanzhengma" /> <img
									src="../img/yanzhengma.png" style="height: 18px; width: 85px;" />
								</td>
							</tr>
							<tr>
								<td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
									&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit"
									value="注      册" height="50px" />
								</td>
							</tr>
						</table>
					</div>
				</div>
			</form>
		</div>
		<div>
			<img src="img/footer.jpg" width="100%" />
		</div>
		<div id="bottom">
			<a href="../案例一:网站信息显示页面/网站信息显示页面.html">关于我们</a> <a href="#">联系我们</a>
			<a href="#">招贤纳士</a> <a href="#">法律声明</a> <a
				href="../案例三:网站友情链接显示页面/网站友情链接显示页面.html">友情链接</a> <a href="#">支付方式</a>
			<a href="#">配送方式</a> <a href="#">服务声明</a> <a href="#">广告声明</a>
			<p>Copyright © 2005-2016 商城 版权所有</p>
		</div>
	</div>
</body>
</html>

JQuery总结:
1.JQuery属性操作
1)属性操作_attr

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>属性操作_attr</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			/**
			 * 需求:
			 * 	1.获取图片的路径
			 * 	2.设置图片的高度属性
			 *  3.给图片设置多个属性(宽度和高度)
			 *  4.移出图片的高度属性
			 */
			
			/**
			 * 方法分析:
			 * 	1.attr(name):读(获)取属性的值
			 *  2.attr(key,value):设置属性值
			 *  3.attr(properties):同时设置多个属性
			 *  4.removeAttr(name):删除某个属性
			 * 
			 * 所有方法注意查看运行显示结果,查看其中的某个方法时,请注释其它方法,后面的案例不再说明!
			 */
			
			/*
			 * 代码实现
			 */
			$(function(){
				//1.attr(name):该方法用于获取属性的值(根据属性的名称)
				var srcEle = $("img").attr("src");
				alert(srcEle);//输出结果为该图片的路径:../../img/1.jpg
				
				//2.attr(key,value):该方法用于设置属性和值
				$("img").attr("height","800px");//设置该图片的高度属性,注意观察图片的高度变化
				
				//3.attr(properties):同时设置多个属性值
				//$("img").attr({"width":"1300px","height":"300px"});//注意观察图片发生的变化(宽高都改变)
				
				//4.removeAttr(name):删除某个属性和值
				$("img").removeAttr("width");//清除width属性后,图片变回其自身原有的大小
				
			});
		</script>
	</head>
	<body>
		<img src="../../img/1.jpg"  width="800px" />
	</body>
</html>

2)属性操作_CSS类

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>属性操作_CSS类</title>
		<style type="text/css">
			.divclass {
				color: red;
			}
			
			.div1 {
				background-color: yellow;
			}
			
			#div1 {
				border: 1px solid black;
				width: 400px;
				height: 250px;
				margin: auto;
			}
			
			#father {
				border: 1px solid white;
				width: 450px;
				height: 300px;
				margin: auto;
				text-align: center;
			}
		</style>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script>
			/**
			 * 需求:
			 * 1.点击button,使一个div的背景颜色变为 黄色
			 * 2.点击button,清空之前设置的背景颜色
			 * 3.通过toggleClass(class) 实现点击字体变为紅色,再点击样式还原
			 */

			/**
			 * 方法分析:
			 *  1.addClass(class) 添加一个class属性
			 *  2.removeClass([class]) 移除一个class属性
			 *  3.toggleClass(class) 如果存在(不存在)就删除(添加)一个类
			 */

			/**
			 *代码实现 
			 */
			$(function() {
				// 1.点击button,使一个div的背景颜色变为黄色
				$("#button1").click(function() {
					$("#div1").addClass("div1");
				});

				// 2.点击button,清空之前设置的背景颜色
				$("#button2").click(function() {
					$("#div1").removeClass("div1");
				});

				// 3.通过toggleClass(class) 实现点击字体变为紅色,再点击样式还原
				$("#button3").click(function() {
					$("#div1").toggleClass("divclass");
				});
			});
		</script>
	</head>

	<body>
		<div id="father">
			<div id="div1">AAAAAA</div><br />
			<input type="button" value="背景颜色变为黄色" id="button1" />
			<input type="button" value="背景颜色清空" id="button2" />
			<input type="button" value="字体颜色开关" id="button3" />
		</div>
	</body>

</html>

3)属性操作_html代码

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>属性操作_html代码</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script>
			/**
			 * 需求:
			 * 	1.点击按钮获取div中 html
			 * 	2.点击按钮设置div中html
			 */

			/**
			 * 方法分析
			 * 	1.html()方法用于读取innerHTML
			 * 	2.html(val)方法用于设置innerHTML
			 */
			
			/**
			 *代码实现 
			 */
			
			$(function(){
				//1.点击按钮获取div中 html
				$("#btn1").click(function(){
					var divEle = $("div").html();
					alert(divEle);//<p>传智播客</p>
				});
				
				//2.点击按钮设置div中html
				$("#btn2").click(function(){
					$("div").html("Java学院");//覆盖之前此位置的内容
				});
				
			})
		</script>
	</head>

	<body>
		<div><p>传智播客</p></div>
		<input type="button" value="获取html" id="btn1" />
		<input type="button" value="设置html" id="btn2" />
	</body>

</html>

4)属性操作_文本text

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>属性操作_文本text</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script>
			/**
			 * 需求:
			 * 	1.点击按钮获取div中text
			 * 	2.点击按钮设置div中text
			 */

			/**
			 * 方法分析
			 * 	1.text()方法用于读取文本内容
			 * 	2.text(val)方法用于设置文本内容
			 */
			
			/**
			 *代码实现 
			 */
			
			$(function(){
				//1.点击按钮获取div中 text
				$("#btn1").click(function(){
					var divEle = $("div").text();
					alert(divEle);//传智播客
				});
				
				//2.点击按钮设置div中text
				$("#btn2").click(function(){
					$("div").text("Java学院");//覆盖之前此位置的内容
				});
				
			})
		</script>
	</head>

	<body>
		<div><p>传智播客</p></div>
		<input type="button" value="获取text" id="btn1" />
		<input type="button" value="设置text" id="btn2" />
	</body>

</html>

5)属性操作_值val

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>属性操作_值val</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script>
			/**
			 * 需求:
			 *  1.点击按钮获得文本框、下拉框、单选框选中的value
			 *  2.点击按钮设置用户名的默认值为“老王”
			 */

			/**
			 * 方法分析
			 * 	1.val()方法用于读取元素value属性
			 * 	2.val(val)方法用于设置元素value属性
			 */
			
			/**
			 *代码实现 
			 */
			
			$(function(){
				//1.点击按钮获得文本框、下拉框、单选框选中的value
				$("#btn1").click(function(){
					alert($("#username").val());
					alert($("#city").val());
					alert($("input[type='radio']:checked").val());
				});
					
				//2.点击按钮设置用户名的默认值为“老王”
				$("#btn2").click(function(){
					$("#username").val("老王");
				});
			})
		</script>
	</head>

	<body>
		用户名 <input type="text" id="username" /> <br/> 
		性别 <input type="radio" name="gender" value="男" />男
			<input type="radio" name="gender" value="女" checked="checked"/> 女<br/> 
		城市
			<select id="city">
				<option value="北京">北京</option>
				<option value="上海">上海</option>
				<option value="广州">广州</option>
			</select> <br/>
			<input type="button" value="获取val" id="btn1" />
			<input type="button" value="设置val" id="btn2" />
	</body>

</html>

2.JQuery文档处理
1)文档处理_插入操作

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>文档处理_插入操作</title>
		<script src="../../js/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			/**
			 * 需求 
			 *  在id=edu下增加<option value="大专">大专</option> 
			 */

			/**
			 * 方法分析:
			 *  内部插入
			 * 		1.append(content):内部结尾处,将B追加到A里面去
			 *  	2.appendTo(content):内部结尾处,将A追加到B里面去
			 *  	3.prepend(content):内部开始处,将B追加到A里面去
			 *  	4.prependTo(content):内部开始处,将B追加到A里面去
			 * 	外部插入
			 *  	1.after(content):外部,将B追加到A后面
			 * 		2.before(content):外部,将A追加到B前面
			 * 		3.insertAfter(content):外部,将A追加到B后面
			 * 		4.insertBefore(content)::外部,将A追加到B前面
			 */

			$(function() {
				// 追加 option 内容大专
				// 创建元素
				var $newNode = $("<option value='大专'>大专</option>");
				
				//内部插入
				//$("#edu").append($newNode);   // 内部结尾,将B追加到A里面去
				//$("#edu").prepend($newNode);  // 内部开始,将B追加到A里面去

				//外部插入
				//$("option[value='本科']").after($newNode);
				$newNode.insertBefore($("option:contains('硕士')"));
			});
		</script>

	</head>

	<body>
		<select id="edu">
			<option value="博士">博士</option>
			<option value="硕士">硕士</option>
			<option value="本科">本科</option>
			<option value="高中">高中</option>
		</select>

	</body>

</html>

2)文档处理_复制操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>文档处理_复制操作</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			/**
			 * 需求
			 * 	1.单击苹果、橘子或者菠萝列表项,复制点击的内容并追加到ul的末尾
			 *  2.单击苹果、橘子或者菠萝列表项,复制点击的内容并追加到ul的末尾,要求复制后的内容也具有复制的能力
			 */
			
			/**
			 * 方法分析:
			 * 	1.clone():克隆匹配的DOM元素并且选中这些克隆的副本。
			 *  2.clone():元素以及其所有的事件处理并且选中这些克隆的副本(简言之,副本具有与真身一样的事件处理能力)
			 */
		
			 $(function(){
			 	//点击li列表项,将当选点击的li内容追加到ul末尾
				$("ul li").click(function(){
				    //$(this).clone().appendTo("ul"); // 复制当前点击的节点,并将它追加到<ul>元素
				    $(this).clone(true).appendTo("ul");//设置参数true后,复制后的内容也具备单击事件
				})   
			  });
		</script>
	</head>
	<body>
		<p title="选择你最喜欢的水果." >你最喜欢的水果是?</p>
		<ul>
		  <li title='苹果'>苹果</li>
		  <li title='橘子'>橘子</li>
		  <li title='菠萝'>菠萝</li>
		</ul>
	</body>
</html>

3)文档处理_替换操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>文档处理_替换操作</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			$(function(){
				//将B的内容替换掉A处的内容
			 	$("p").replaceWith("<strong>你最不喜欢的水果是?</strong>"); 
			 	// 同样的实现: $("<strong>你最不喜欢的水果是?</strong>").replaceAll("p"); 
			});
		</script>
	</head>
	<body>
		<p title="选择你最喜欢的水果." >你最喜欢的水果是?</p>
		<ul>
		  <li title='苹果'>苹果</li>
		  <li title='橘子'>橘子</li>
		  <li title='菠萝'>菠萝</li>
		</ul>
	</body>
</html>

4)文档处理_删除操作

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>文档处理_删除操作</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script type="text/javascript">
			/**
			 * 需求
			 * 	分别使用detach和remove 删除带有click事件的p标签,删除后再将p 重新加入body 查看事件是否存在
			 */
			
			/**
			 * 方法分析
			 * 	1.remove():删除节点后,事件也会删除
			 *  2.detach():删除节点后,事件会保留 从1.4新API 
			 *  3.empty():清空元素中的所有后代节点。(这个案例是要删除而不是清空,需要注意)
			 */
			
			/**
			 * 代码实现 
			 */
			$(function() {
				$("p").click(function() {
					alert($(this).text());
				});
				// 使用remove方法删除 p元素,连同事件一起删除
				//var $p = $("p").remove();
				// 使用detach删除,事件会保留
				var $p = $("p").detach();

				$("div").append($p);
			});
		</script>

	</head>

	<body>
		<p>AAA</p>
		
		<div>BBB</div>
	</body>

</html>

5)删除相关操作的区别

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>删除相关操作的区别</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			$(function(){
				//清空第二个li元素节点的所有后代节点(此处是文本节点橘子),通过firebug查看html源码验证
				//$("ul li:eq(1)").empty();
				
				//删除第一个li元素节点
				$("ul li:eq(0)").remove();
			});
		</script>
	</head>
	<body>
		<p title="选择你最喜欢的水果.">你最喜欢的水果是?</p>
		<ul>
			<li title='苹果'>苹果</li>
			<li title='橘子'>橘子</li>
			<li title='菠萝'>菠萝</li>
		</ul>
	</body>
</html>

3.JQuery遍历操作
1)使用对象访问方式遍历

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>使用对象访问方式遍历</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			$(function(){
				// 全选/ 全不选
				$("#checkallbox").click(function(){
					var isChecked = this.checked;
					//使用对象访问的方式进行遍历,语法:$().each(function(){})
					$("input[name='hobby']").each(function(){
						this.checked = isChecked;
					});
				});
			});
		</script>
	</head>
	<body>
		请选择您的爱好<br/>
		<input type="checkbox" id="checkallbox" /> 全选/全不选 <br/>
		<input type="checkbox" name="hobby" value="足球" /> 足球
		<input type="checkbox" name="hobby" value="篮球" /> 篮球
		<input type="checkbox" name="hobby" value="游泳" /> 游泳
		<input type="checkbox" name="hobby" value="唱歌" /> 唱歌 <br/>
	</body>
</html>

2)使用工具类遍历方式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>使用工具类遍历方式</title>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js" ></script>
		<script>
			/**
			 * 说明:两种遍历方式,掌握其中一种即可,个人觉得此种方式较容易理解!
			 */
		
			$(function(){
				// 全选/ 全不选
				$("#checkallbox").click(function(){
					var isChecked = this.checked;
					//使用工具类遍历方式,语法:$.each(array,function(i,j){})  其中array代表被遍历的对象,i代表角标,j代表遍历后的内容。
					$.each($("input[name='hobby']"), function(i,j) {
						j.checked = isChecked;
					});
				});
			});
		</script>
	</head>
	<body>
		请选择您的爱好<br/>
		<input type="checkbox" id="checkallbox" /> 全选/全不选 <br/>
		<input type="checkbox" name="hobby" value="足球" /> 足球
		<input type="checkbox" name="hobby" value="篮球" /> 篮球
		<input type="checkbox" name="hobby" value="游泳" /> 游泳
		<input type="checkbox" name="hobby" value="唱歌" /> 唱歌 <br/>
	</body>
</html>

4.JQuery的CSS操作

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>属性操作_CSS类</title>
		<style type="text/css">
			.divclass {
				color: red;
			}
			
			.div1 {
				background-color: yellow;
			}
			
			#div1 {
				border: 1px solid black;
				width: 400px;
				height: 250px;
				margin: auto;
			}
			
			#father {
				border: 1px solid white;
				width: 450px;
				height: 300px;
				margin: auto;
				text-align: center;
			}
		</style>
		<script type="text/javascript" src="../../js/jquery-1.11.0.min.js"></script>
		<script>
			/**
			 * 需求:
			 * 1.点击button,使一个div的背景颜色变为绿色
			 * 2.点击button,使一个div的背景颜色变为绿色以及里面内容的字体颜色变成红色
			 */

			/**
			 * 方法分析:
			 *  1.css(name, value) 设置一个CSS样式属性
			 *  2.css(properties) 传递key - value对象, 设置多个CSS样式属性
			 */

			/**
			 * CSS操作方法汇总:
			 * 1.通过attr属性设置 / 获取 style属性
			 * 	attr('style', 'color:red'); // 添加style属性
			 * 2.设置CSS样式属性
			 * 	css(name, value) 设置一个CSS样式属性
			 * 	css(properties) 传递key - value对象, 设置多个CSS样式属性		
			 * 3.设置class属性
			 * 	addClass(class) 添加一个class属性
			 * 	removeClass([class]) 移除一个class属性
			 * 	toggleClass(class) 如果存在(不存在)就删除(添加) 一个类
			 */
	
			/**
			 *代码实现 
			 */
			$(function() {
				// 1.点击button,使一个div的背景颜色变为绿色
				//方式一
				/*$("#button1").click(function() {
					$("#div1").css("background-color","green");
				});*/
				
				//方式二:
				$("#button1").click(function() {
					$("#div1").attr("style","background-color:green");
				});

				// 2.点击button,使一个div的背景颜色变为绿色,内容字体颜色变成红色
				$("#button2").click(function() {
					$("#div1").css({"background-color":"green","color":"red"});
				});
			});
		</script>
	</head>

	<body>
		<div id="father">
			<div id="div1">AAAAAA</div><br />
			<input type="button" value="背景颜色变为绿色" id="button1" />
			<input type="button" value="背景颜色变为绿色内容字体变成红色" id="button2" />
		</div>
	</body>

</html>

5.JQuery事件
1)页面未加载执行失败

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>页面未加载执行失败</title>
		<script type="text/javascript">
			document.getElementById("panel").onclick = function() {
				alert("元素已经加载完毕 !");
			}
			/*
				执行错误,为什么?
				因为dom还未加载完毕。
			*/
		</script>
	</head>

	<body>
		<div id="panel">click me.</div>
	</body>

</html>

解决:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>4-1-2</title>
	</head>
	<!--解决办法:
		方式一:将JS代码移到需要操作的html代码后面,一般建议放到body的外面
		方式二:将JS代码放到一个页面加载函数中去-->

	<body>
		<div id="panel">click me.</div>
		<script type="text/javascript">
				document.getElementById("panel").onclick = function() {
					alert("元素已经加载完毕 !");
				}
				/*正确执行*/
		</script>
	</body>

</html>

2)事件绑定
点击展开

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>点击展开</title>
		<link rel="stylesheet" type="text/css" href="../../../css/style.css" />
		<script src="../../../js/jquery-1.8.3.min.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
				$("#panel h5.head").bind("click", function() {
					var $content = $(this).next();
					if($content.is(":visible")) {
						$content.hide();
					} else {
						$content.show();
					}
				})
			})
		</script>
	</head>

	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
		</div>
	</body>

</html>

鼠标滑过

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>鼠标滑过</title>
		<link rel="stylesheet" type="text/css" href="../../../css/style.css" />
		<script src="../../../js/jquery-1.8.3.min.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
				$(".head").mouseover(function() {
					$(this).next().show();
				}).mouseout(function() {
					$(this).next().hide();
				})
			})
		</script>
	</head>

	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
		</div>
	</body>

</html>

3)事件移除

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>事件移除</title>
		<style type="text/css">
			* {
				margin: 0;
				padding: 0;
			}
			
			body {
				font-size: 13px;
				line-height: 130%;
				padding: 60px;
			}
			
			p {
				width: 200px;
				background: #888;
				color: white;
				height: 16px;
			}
		</style>
		<script src="../../../js/jquery-1.8.3.min.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
				$('#btn').bind("click", function() {
					$('#test').append("<p>我的绑定函数1</p>");
				});
				$('#delAll').click(function() {
					$('#btn').unbind("click");
				});
			})
		</script>
	</head>

	<body>
		<button id="btn">点击我</button>
		<div id="test"></div>
		<button id="delAll">删除所有事件</button>
	</body>

</html>

4)合成事件
合成事件hover

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>合成事件hover</title>
		<link rel="stylesheet" type="text/css" href="../../../css/style.css" />
		<script src="../../../js/jquery-1.8.3.min.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
				$(".head").hover(function() {
					$(this).next().show();
				}, function() {
					$(this).next().hide();
				})
			})
		</script>
	</head>

	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
		</div>
	</body>

</html>

合成事件toggle

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>合成事件toggle</title>
		<link rel="stylesheet" type="text/css" href="../../../css/style.css" />
		<script src="../../../js/jquery-1.8.3.min.js" type="text/javascript"></script>
		<script type="text/javascript">
			$(function() {
				$(".head").toggle(function() {
					$(this).next().hide();
				}, function() {
					$(this).next().show();
				})
			})
		</script>
	</head>

	<body>
		<div id="panel">
			<h5 class="head">什么是jQuery?</h5>
			<div class="content">
				jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
			</div>
		</div>
	</body>

</html>

Ajax:异步JavaScript和XML

Ajax并不是新的技术,只是把原有的技术,整合到一起而已。
1.使用CSS和XHTML来表示。
2. 使用DOM模型来交互和动态显示。
3.使用XMLHttpRequest来和服务器进行异步通信。
4.使用javascript来绑定和调用。

Ajax的GET请求:
1.创建对象

function  ajaxFunction(){
	   var xmlHttp;
	   try{ // Firefox, Opera 8.0+, Safari
	        xmlHttp=new XMLHttpRequest();
	    }
	    catch (e){
		   try{// Internet Explorer
		         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		      }
		    catch (e){
		      try{
		         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		      }
		      catch (e){}
		      }
	    }

		return xmlHttp;
	 }

2.发送请求

function get() {
		
		//1. 创建xmlhttprequest 对象
		var request = ajaxFunction();
		
		//2. 发送请求。
		// http://localhost:8080/jsdemo/ajaxtest.jsp
		//http://localhost:8080/jsdemo/ajaxServlet01
		
		/*	
			参数一: 请求类型  GET or  POST
			参数二: 请求的路径
			参数三: 是否异步, true  or false
			
		*/
//		request.open("GET" ,"/jsdemo/ajaxServlet01" ,true );
		request.open("GET" ,"/jsdemo/ajaxServlet01?name=aa&age=18" ,true );
		request.send();
	}

发送请求的同时,获取响应数据:

function get() {
		
		//1. 创建xmlhttprequest 对象
		var request = ajaxFunction();
		
		//2. 发送请求
		request.open("GET" ,"/jsdemo/ajaxServlet01?name=aa&age=18" ,true );
		
		//3. 获取响应数据 
		//注册监听的意思。  一会准备的状态发生了改变,那么就执行等号右边的方法
		request.onreadystatechange = function(){
			
			//前半段表示已经能够正常处理。  再判断状态码是否是200
			if(request.readyState == 4 && request.status == 200){
				//弹出响应的信息
				alert(request.responseText);
			}
		}
		request.send();
	}

</script>
</head>
<body>
	<h3><a href="" onclick="get()">使用Ajax方式发送Get请求</a></h3>
</body>

补充:
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪

Ajax的POST请求

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

	function  ajaxFunction(){
	   var xmlHttp;
	   try{ // Firefox, Opera 8.0+, Safari
	        xmlHttp=new XMLHttpRequest();
	    }
	    catch (e){
		   try{// Internet Explorer
		         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		      }
		    catch (e){
		      try{
		         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		      }
		      catch (e){}
		      }
	    }

		return xmlHttp;
	 }

	//执行post请求
	function post() {
		//1. 创建xmlhttprequest 对象
		var request = ajaxFunction();
		//2. 发送请求,无参
		request.open("POST" ,"/jsdemo/ajaxServlet01" ,true );
		//request.send();
		//发送请求,带参
		//如果使用的是post方式带数据,那么 这里要添加头, 说明提交的数据类型是一个经过url编码的form表单数据
		request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		
		//带数据过去  , 在send方法里面写表单数据。 
		request.send("name=my&age=19");
	}
	
</script>
</head>
<body>
	<h3><a href="" onclick="post()">使用Ajax方式发送POST请求</a></h3>
</body>
</html>

获取响应数据方式和GET请求一致。

Ajax验证用户名是否已存在:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

	//1. 创建对象
	function  ajaxFunction(){
	   var xmlHttp;
	   try{ // Firefox, Opera 8.0+, Safari
	        xmlHttp=new XMLHttpRequest();
	    }
	    catch (e){
		   try{// Internet Explorer
		         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		      }
		    catch (e){
		      try{
		         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		      }
		      catch (e){}
		      }
	    }
	
		return xmlHttp;
	 }

	function checkUserName() {
		
		//获取输入框的值 document 整个网页
		var uname = document.getElementById("uname").value; 
		//1. 创建对象
		var request = ajaxFunction();
		
		//2. 发送请求
		request.open("POST"  ,"/jsdemo/checkUserNameServlet" , true );
		
		//注册状态改变监听,获取服务器传送过来的数据
		request.onreadystatechange = function(){
			
			if(request.readyState == 4 && request.status == 200){
				//alert(request.responseText);
				var data = request.responseText;
				if(data == 1){
					//alert("用户名已存在");
					document.getElementById("span01").innerHTML = "<font color='red'>用户名已存在!</font>";
				}else{
					document.getElementById("span01").innerHTML = "<font color='green'>用户名可用!</font>";
					//alert("用户名未存在");
				}
			}
			
		}
		
		request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		request.send("uname="+uname);
	}
	
</script>
</head>
<body>
	<table border="1" width="500">
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="uname" id="uname"
				onblur="checkUserName()"><span id="span01"></span></td>
		</tr>
		<tr>
			<td>密码</td>
			<td><input type="text" name=""></td>
		</tr>
		<tr>
			<td>邮箱</td>
			<td><input type="text" name=""></td>
		</tr>
		<tr>
			<td>简介</td>
			<td><input type="text" name=""></td>
		</tr>
		<tr>
			<td colspan="2"><input type="submit" value="注册"></td>
		</tr>
	</table>
</body>
</html>
package com.xdh.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xdh.dao.UserDao;
import com.xdh.dao.UserDaomImpl;

/**
 * Servlet implementation class CheckUserNameServlet
 */
@WebServlet("/checkUserNameServlet")
public class CheckUserNameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CheckUserNameServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
try {
			
			request.setCharacterEncoding("UTF-8");
			
			//1. 检测是否存在
			String name = request.getParameter("uname");
			System.out.println("uname="+name);
			
			UserDao dao = new UserDaomImpl();
			boolean isExist = dao.checkUserName(name);
			
			//2.  通知页面,到底有还是没有。
			if(isExist){
				response.getWriter().println(1);  //存在用户名
			}else{
				response.getWriter().println(2); //不存在该用户名
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

$.ajax()案例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>

<script type="text/javascript">
	$(function(){
		$("#submit").click(function(){
			$.ajax({
				url:"/jsdemo/ajaxServlet",
				type:"post",
				data:{
					name:$("#name").val(),
					age:20
					},
				dataType:"text",
				success:function(data){
					alert(data);
				},
				error:	function(){
					alert("出现异常");
				}
			})
		})
	})
</script>
</head>
<body>
	<form action="servlett" method="get">
		<input type="text" name="name" id="name"> 
	    <input type="button" id="submit" value="注册">
	</form>
</body>
</html>

JQuery Ajax
JQuery Ajax 的load()方法:
jQuery load() 方法是简单但强大的 AJAX 方法。
load() 方法从服务器加载数据,并把返回的数据放入被选元素中。

$(selector).load(URL,data,callback);
必需的 URL 参数规定您希望加载的 URL。
可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。
可选的 callback 参数是 load() 方法完成后所执行的函数名称。

可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数:

responseTxt - 包含调用成功时的结果内容
statusTXT - 包含调用的状态
xhr - 包含 XMLHttpRequest 对象

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>

<script type="text/javascript">
	function load() {
		//直接赋值
		//$("#aaa").val("test");
		//把aaa.txt文件内容赋值
		$("#aaa").load("aaa.txt");
		//把ajaxServlet响应回的内容赋值
		//$("#aaa").load("/jsdemo/ajaxServlet");
		//$("#aaa") --- document.getElementById("aaa");
		//$("#aaa").load("/jsdemo/ajaxServlet" , function(responseText , statusTXT  , xhr) {
			//alert("jieguo:"+responseText);
			//找到id为aaa的元素, 设置它的value属性值为 responseText 对应的值
			//$("#aaa").val(responseText);
		//}); 
	}
</script>
</head>
<body>
<h3><input type="button"  onclick="load()" value="使用JQuery执行load方法"> </h3>
<!-- <input type="text" id="aaa"> -->
<div id = "aaa"></div>
</body>
</html>

JQuery三种赋值:
val():只能放标签带有value属性
html();如果想进行样式处理,用html()
text():
load()方法底层是用get请求,赋值用text(),所以上述代码改用input将返回不了值

jQuery - AJAX get() 和 post() 方法:

GET:
语法:$.get(URL,callback);
必需的 URL 参数规定您希望请求的 URL。
可选的 callback 参数是请求成功后所执行的函数名。
callback回调函数。第一个回调参数存有被请求页面的内容,第二个回调参数存有请求的状态。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>

<script type="text/javascript">
	function get() {
		$.get("/jsdemo/ajaxServlet", function(data, status) {
			alert("返回结果是:" + data);
			alert("返回状态是:" + status);
			$("#div01").html("html="+data);
			//$("#div01").val(data);//val  用于设置 元素里面有values 的属性值 
			//$("#div01").text("text=" + data);
			//$("#div01").html(data); // <font>
		});
	}
</script>

</head>
<body>
	<input type="button" onclick="get()" value="使用JQuery演示 get方法">

	<div id="div01"></div>
</body>
</html>

带参:

$.get("/jsdemo/ajaxServlet?name=my&age=25", function(data, status) {})

POST:
语法:$.post(URL,data,callback);
必需的 URL 参数规定您希望请求的 URL。
可选的 data 参数规定连同请求发送的数据。
可选的 callback 参数是请求成功后所执行的函数名。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>

<script type="text/javascript">
	function post() {
		$.post("/jsdemo/ajaxServlet", {
			name : "zhangsan",
			age : 18
		}, function(data, status) {
			//想要放数据到div里面去。 --- 找到div
			$("#div01").html(data);
		});
	}
</script>

</head>
<body>
	<input type="button" onclick="post()" value="使用JQuery演示 post方法">

	<div id="div01"></div>
</body>
</html>

post带参用json传

案例:仿百度搜索

首页:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="../js/baidu.js"></script>
</head>
<body>
<center>
<h2>百度</h2>
	<input type="text" name="word" id="word" style="width: 600px ; height: 50px  ;font-size: 20px;">
	<input type="button" value="百度一下"  style="height: 55px ; width: 100px ; ">
	
	<div id="div01" style="position:relative; left : -54px; width: 600px; height: 200px ; border:  1px solid blue; display: none"></div>
</center>
</body>
</html>

外部js:

//1. 捕捉到键盘弹起的事件 
//在文档准备就绪的时候,对某一个元素进行onkeyup事件监听
/*$(document).ready(function(){
	
})*/
$(function(){
	$("#word").keyup(function() {
		//2。 获取输入框的值 
		//var word = $("#word").val();
		//this  对应就是执行这个方法的那个对象, $("#word")
		var word = $(this).val();
		
		//alert(word);

		if(word == ""){
			$("#div01").hide();
		}else{
			//3. 请求数据。
			$.post("/jsdemo/baiduServlet",{word:word} ,function(data , status){
				//alert(data);
				$("#div01").show();
				$("#div01").html(data);
			});
		}
	})
});

baiduServlet:

package com.xdh.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xdh.dao.WordsDao;
import com.xdh.dao.WordsDaoImpl;
import com.xdh.entity.WordBean;

/**
 * Servlet implementation class BaiduServlet
 */
@WebServlet("/baiduServlet")
public class BaiduServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BaiduServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		try {
			//1. 先获取参数
			String word = request.getParameter("word");
			System.out.println("word="+word);
			
			//2. 让dao执行查询
			WordsDao dao = new WordsDaoImpl();
			List<WordBean> list = dao.findWords(word);
			
			for (WordBean wordBean : list) {
				System.out.println("==="+wordBean.toString());
			}
			
			request.setAttribute("list", list);
			
			//3. 返回数据
			response.setContentType("text/html;charset=utf-8");
			//response.getWriter().write("数据是:");
//			响应这个jsp的页面,全部把它返回给请求者 , 请求: 浏览器请求 , 浏览器 看到jsp
			//$jquery ,来请
			request.getRequestDispatcher("/ajaxtest/listBaidu.jsp").forward(request, response);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request,response);
	}

}

返回的结果先放进listBaidu.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

<table style="width: 100%">
	<c:forEach items="${list }" var="wordBean">
		<tr>
			<td>${wordBean.words}</td>
		</tr>
	</c:forEach>
</table>

dao层查询语句:

String sql = "select * from baidu where words like ?  limit ?";
return runner.query(sql, new BeanListHandler<WordBean>(WordBean.class) , word+"%" , 5);

使用JQuery实现省市联动:
服务器和客户端数据传输的方式:xml和json

XML:
首页:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="../js/city_xml.js"></script>
</head>
<body>
省份: <select name="province" id ="province">
		<option value="" >-请选择 -
		<option value="1" >江苏
		<option value="2" >山东
		<option value="3" >安徽
		<option value="4" >浙江
	</select>
城市: 
	<select name="city" id="city">
		<option value="" >-请选择 -
	</select>
</body>
</html>
$(function() {
	//1。找到省份的元素
	$("#province").change(function() {
		//2. 一旦里面的值发生了改变,那么就去请求该省份的城市数据
		//$("#province").varl();
		var pid = $(this).val();
		
		/*<list>
			<city>
				<id>1<id>
				<pid>1</pid>
				<cname>南京</cname>
			</city>
			<city >
				<id>2<id>
				<pid>1</pid>
				<cname>苏州</cname>
			</city>
		</list>*/
		
		$.post( "/jsdemo/cityXmlServlet",{pid:pid} ,function(data,status){
			alert("回来数据了:"+data);
			
			//先清空以前的值:
			$("#city").html("<option value='' >-请选择-")
			//遍历: 
			//从data数据里面找出所有的city  , 然后遍历所有的city。
			//遍历一个city,就执行一次function方法
			$(data).find("city").each(function() {
				
				//遍历出来的每一个city,取它的孩子。 id , cname
				var id = $(this).children("id").text();
				var cname = $(this).children("cname").text();
				
				$("#city").append("<option value='"+id+"' >"+cname)
			});
		} );
		
	});
});

.find() :获得当前匹配元素集合中每个元素的后代,由选择器进行筛选。

cityXmlServlet:

package com.xdh.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.thoughtworks.xstream.XStream;
import com.xdh.dao.CityDao;
import com.xdh.dao.CityDaoImpl;
import com.xdh.entity.CityBean;

/**
 * Servlet implementation class CityXmlServlet
 */
@WebServlet("/cityXmlServlet")
public class CityXmlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CityXmlServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			//1. 获取参数
			int pid = Integer.parseInt(request.getParameter("pid"));
			
			//2 找出所有的城市
			CityDao dao = new CityDaoImpl();
			List<CityBean> list = dao.findCity(pid);
			
			//3. 返回数据。手动拼  ---> XStream  转化 bean对象成 xml
			XStream xStream = new XStream();
			
			//想把id做成属性
			//xStream.useAttributeFor(CityBean.class, "id");
			//设置别名
			xStream.alias("city", CityBean.class);
			//转化一个对象成xml字符串
			String xml = xStream.toXML(list);
			System.out.println(xml);
			//xml转对象
//			Object bean = xStream.fromXML(xml);
//			System.out.println("bean----"+bean.toString());
			
			//返回数据
			response.setContentType("text/xml;charset=utf-8");
			response.getWriter().write(xml);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		};
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request,response);
	}

}

返回的数据以xml格式传给前端接收,需导包:
在这里插入图片描述
xml转对象时需要增加jar包:

在这里插入图片描述
JSON:
json导包:
在这里插入图片描述

$(function() {
	//1。找到省份的元素
	$("#province").change(function() {
		//2. 一旦里面的值发生了改变,那么就去请求该省份的城市数据
		//$("#province").varl();
		var pid = $(this).val();
		
		/*[
		    {
		        "cname": "南京",
		        "id": 1,
		        "pid": 1
		    },
		    {
		        "cname": "苏州",
		        "id": 2,
		        "pid": 1
		    }
		    ...
		]*/
		$.post( "/jsdemo/cityJsonServlet",{pid:pid} ,function(data,status){
			
			//先清空
			$("#city").html("<option value='' >-请选择-");
			//再遍历,追加
			$(data).each(function(index , c) {
				$("#city").append("<option value='"+c.id+"' >"+c.cname)
			});
		},"json" );
		
	});
});

注意:
jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
url 必需。规定把请求发送到哪个 URL。
data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
success(data, textStatus, jqXHR) 可选。请求成功时执行的回调函数。
dataType 可选。规定预期的服务器响应的数据类型。
默认执行智能判断(xml、json、script 或 html)。

cityJsonServlet:

package com.xdh.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import com.xdh.dao.CityDao;
import com.xdh.dao.CityDaoImpl;
import com.xdh.entity.CityBean;

/**
 * Servlet implementation class CityJsonServlet
 */
@WebServlet("/cityJsonServlet")
public class CityJsonServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CityJsonServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			//1. 获取参数
			int pid = Integer.parseInt(request.getParameter("pid"));
			
			//2 找出所有的城市
			CityDao dao = new CityDaoImpl();
			List<CityBean> list = dao.findCity(pid);
			
			//3. 把list ---> json数据
			//JSONArray ---> 变成数组 , 集合  []
			//JSONObject ---> 变成简单的数据  { name : zhangsan , age:18}
			
			JSONArray jsonArray = JSONArray.fromObject(list);
			String json = jsonArray.toString();
			
			
			response.setContentType("text/html;charset=utf-8");
			response.getWriter().write(json);
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		};
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request,response);
	}

}

注意:
json用:
response.setContentType(“text/html;charset=utf-8”);
xml用:
response.setContentType(“text/xml;charset=utf-8”);

补充一个Json工具类:

package com.xdh.util;

import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.xml.XMLSerializer;

/**
 * 处理json数据格式的工具类
 * 
 * @Date 2013-3-31
 * @version 1.0
 */
public class JsonUtil {
	/**
	 * 将数组转换成String类型的JSON数据格式
	 * 
	 * @param objects
	 * @return
	 */
	public static String array2json(Object[] objects){
		
		JSONArray jsonArray = JSONArray.fromObject(objects);
		return jsonArray.toString();
		
	}
	
	/**
	 * 将list集合转换成String类型的JSON数据格式
	 * 
	 * @param list
	 * @return
	 */
	public static String list2json(List list){
		
		JSONArray jsonArray = JSONArray.fromObject(list);
		return jsonArray.toString();
		
	}
	
	/**
	 * 将map集合转换成String类型的JSON数据格式
	 * 
	 * @param map
	 * @return
	 */
	public static String map2json(Map map){
		
		JSONObject jsonObject = JSONObject.fromObject(map);
		return jsonObject.toString();
		
	}
	
	/**
	 * 将Object对象转换成String类型的JSON数据格式
	 * 
	 * @param object
	 * @return
	 */
	public static String object2json(Object object){
		
		JSONObject jsonObject = JSONObject.fromObject(object);
		return jsonObject.toString();
		
	}
	
	/**
	 * 将XML数据格式转换成String类型的JSON数据格式
	 * 
	 * @param xml
	 * @return
	 */
	public static String xml2json(String xml){
		
		JSONArray jsonArray = (JSONArray) new XMLSerializer().read(xml);
		return jsonArray.toString();
		
	}
	
	/**
	  * 除去不想生成的字段(特别适合去掉级联的对象)
	  *
	  * @param excludes
	  * @return
	*/
	public static JsonConfig configJson(String[] excludes) {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setExcludes(excludes);
		jsonConfig.setIgnoreDefaultExcludes(true);
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
		return jsonConfig;
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值