javascript
DOM 和 BOM
jQuery
//=============================================================
//---------------------------输出------------------------------
	alert("this is exe");
	document.write("this is string");
//------------在同一个页面中的javascript同属一体-------------
//=============================================================
//--------------------javascript重定向------------------------
	//1.当点击连接时执行该程序
	<a href="javascript:alert()">demo</a>
	//2.利用表单执行javascript
	//3.凡是有连接的地方都可同样操做
	<form action="javascript:alert('hello-----');">
		<input type="submit">
	</form>
	//-------------------------事件---------------------------
	<div onclick="alert('hello')">hello</div>
//=============================================================
//---------------------运算符和表达式-------------------------
	/*
	算数运算符号	+ - * / % ++ --
		+加法
		+连接字符串
		%一种是被整除 一种求一段范围
	赋值运算符号	= += -= *= /= %=
	条件运算符号	> < == != >= <= === !==
	逻辑运算符号	&& || ! ^
	位运算符		>> >>> << | & ~
	其他运算符		? :
	*/
//=============================================================
//--------------------javascript语法特点----------------------
	//javascript区分大小写
	//对象:每个单词首字母都要大写 Date(); new Object();
	//javascript将换行看做语句的结束
	//变量在浏览器关闭后释放
//-----------------------变量的声明---------------------------
	//在函数外面声明的变量为全局变量,在函数内部声明的变量为局部变量
	var a=10;
		a=20;	//重新给变量赋值
		
	//也可以不声明直接使用变量
	a=20;
//--------------------返回变量或函数类型----------------------
	typeof(变量);
	typeof(函数不加括号);
	//javascript数据类型
	number (int float double)
	string (string char)
	boolean
	object(object array null)
	//javascript单引号和双引号相同
//=============================================================
//---------------------javascript函数--------------------------
	//函数无调用顺序,即函数声明前后都可调用。
	//函数遇到return就停止执行。
//--------在javascript中函数是变量,可以将函数赋值----------
	//函数声明
	function table(){}
	//将函数table赋值给demo,不加括号仅代表函数,加括号则调用函数
	demo=table;
	//调用函数
	demo();
	//弹出table函数声明,即函数代码
	alert(table);
//-------------------其他声明函数的方法-----------------------
	//此函数不用起名
	var test=function(a,b){}
	//函数的调用
	test(a,b);
//-------------------将函数作为参数传入函数------------------
	//声明带有函数参数的函数
	function demo(a,fun){
		return a+fun();
	}
	//被调用的函数
	function test(){
		return 100;
	}
	//调用带参数的函数
	demo(a,test);
	//在函数中直接传函数可以不写函数名
	demo(a,function(){return true;});

//---------------全局变量与局部变量---------------------------
	var test=10;	//声明全局变量
	function demo(){
		test+=20;	//此处调用的是全局变量
	}
	demo();
//------------javascript函数没有默认参数----------------------
	//php默认没有参数,即在调用函数时有参数就要传值
	function demo(a,b){}
	//自定义添加默认参数功能
	function test(a,b){
		if(typeof(a)=="undefined")
			a=1;
		if(typeof(b)=="undefined")
			b=2;
		alert(a+"-------"+b);
	}
	//其他自定义添加默认参数功能
	function test(a,b){
		a = a ? a : 1;
		b = b ? b : 1;
		alert(a+"---"+b);
	}
	//实参比形参多的情况下,利用函数arguments
	function test(){
		alert(arguments.length);	//arguments是一个函数,arguments.length代表数组长度
		alert(arguments[2]);		//此方法取出数组内容
	}
	test(1,2,3,4,5,6);
//=============================================================
//-------------------------对象-------------------------------
	//javascript没有类的概念
	global
	escape(字符串)		//将字符串编码
	unescape(编码)		//将字符串解码
	parseInt(小数)		//将数字舍去小数点后部
	parseFloat(字符串)	//字符串转浮点数
	isNaN(类数字)		//检测是否为数字
	eval(代码)			//检查并执行代码,执行代码组成的字符串
//-------------------------实例化对象-------------------------
	var date=new Date();
	//对象使用方法
	对象实例.属性
	对象实例.["属性"]
	对象实例.方法()
//------------------------获取时间实例------------------------
	var DT=new Date();
	var str="Today is:";
	str+=DT.getYear()+"年";
	str+=(DT.getMonth()+1)+"月";
	str+=DT.getDate()+"日";
	str+=DT.getHours()+":";
	str+=DT.getMinutes()+":";
	str+=DT.getSeconds()+" 星期";
	switch(DT.getDay()){
		case 0: str+="日";break;
		case 1: str+="一";break;
		case 2: str+="二";break;
		case 3: str+="三";break;
		case 4: str+="四";break;
		case 5: str+="五";break;
		case 6: str+="六";break;
	}
	document.write(str);
//=====================自定义对象=============================
	//----------------------1.方式一--------------------------
	function Play(){}
	var p=new Play();
	//自定义属性
	p.width=300;
	p.height=200;
	p.num=4;
	p.autotime=3;
	//自定义方法
	p.autoplay=function(){alert("------");}
	p.test=function(){}
	//调用对象
	alert(p.width);
	//-----------------------2.方式二-------------------------
	//系统自定义方法,系统自动带有Object方法
	var p=new Object;
	//下面同上
	p.width=100;
	//-----------------------3.方式三-------------------------
	//用一个方法将声明过程包括在内
	function Play(){
		var p=new Play();
		//自定义属性
		p.width=300;
		p.height=200;
		p.num=4;
		p.autotime=3;
		//自定义方法
		p.autoplay=function(){
			//内部调用用this关键字代表本类
			alert(this.width);
		}
		p.test=function(){}
		return p;
	}
	var p=Play();
	//后面也可以添加属性与方法(不推荐)
	p.demo="hello";
	//--------------------4.方式四----------------------------*
	//创建对象
	function Play(width,height,num){
		this.width=width;
		this.height=height;
		this.num=num;
		this.autoPlay=function(){}
		this.test=function(){
			alert(this.height);
		}
	}
	//调用对象
	var p=new Play(300,200,5);
	//调用对象里的方法
	p.test();
//------------------------对象的使用--------------------------
	//-----------------用for语句遍历对象---------------------
	var p=new Play(300,200,5);
	//for(变量 in 对象){} 每一次将对象的属性名p赋值给变量pro
	var pro="";
	for(pro in p){
		alert(pro);		//pro为属性名称
		alert(p[pro]);//中括号中的字母是一个变量不加引号
	}
	p["width"]		//改width为字符串
	p[width]		//改width为变量
	//-----------------对象的操作方式-------------------------
	//with有省略书写类名称的作用
	with(对象){
		方法或属性名;//此处省略类名
	}
	with(document){//大括号内的方法都是with小括号内对象的方法
		write("hello");
	}
//==========================常用对象==========================
	//-----------------函数对象的操作,不推荐-----------------
	var demo=new Function(字符串参数,字符串参数,最后一个函数体);
	var demo=new Function("x","y","return x+y");
	//------------------字符串对象----------------------------
	var str=new String("abc");
	var str="abc";	//两种方法相同
	//字符串对象属性
	length()
	//-------------------正则对象-----------------------------
	//在javascript中正则模式不用加引号 
	var pattern=/\<img\>/i;
	//此方法用引号
	var pattern=new RegExp("/\<img\>/","i");
	
	//JavaScript模式修正符只有三个
	/*
	i	匹配部分大小写
	g	匹配多次
	m	多行查找*/
	
	//正则表达式必须放在字符串处理函数上才能发挥作用
	var str=" user name";
	if(str.match(/^\s+$/)){//匹配空白
		alert("true");
	}else{
		alert("false");
	}
	//str.replace()函数的使用
	var str="vfbb23gvtbvh";
	var nstr=str.replace("23","232323");
	//使用正则匹配替换
	var nstr=str.replace(/\d/g,"232323");
	//-------------------常用数学对象-------------------------
	Math.random();	//随机数
	Math.ceil();		//进一取整
	Math.floor();		//割舍,小于等于这个浮点数
	Math.round();		//四舍五入
	//将数字控制在一个范围内
	var num=25;
	var i=Math.max(-6,Math.min(6,num));
//=======================数组的声明与使用=====================
//-------------------------数组的声明-------------------------
	//json格式
	var p={name:"stephne",age:20,sex:man};
	//快速格式
	var p=["","",""];
	//二维数组的声明
	var p=[["",""],["",""],["",""]];
	//数组的使用
	alert(p[1]);
	alert(p["name"]);
	alert(p.name);
	//二维数组的使用
	alert(p[1][1]);
	
	//使用Array对象
	var arr=new array("","");
	var arr=new array(10);	//表示创建带有10个空元素的数组
//------------------------数组的输出-------------------------
	var arr=[1,5,9,7,8,3,4];
	//用for语句遍历数组
	for(var i=0;i< arr.length;i++){	//arr.length数组的长度
		document.write(arr[i]+"<br>");
	}
	//直接输出数组
	document.write(arr);
	document.write(arr[2]);
	//在数组中排序
	var arr=[1,5,9,7,8,3,4];
	arr.sort();
//---------------------传入回调函数排序方法-----------------
	arr.sort(
		function(a,b){
			if(a.length < b.length)
				return -1;
			else if(a.length == b.length)
				return 0;
			else
				return 1;
		}
	);
	document.write(arr);
//----------------------向数组中压入与弹出数据--------------
	//-------------------堆栈式------------------------------
	//向数组中压入数据,数据在数组最后一个
	arr.push("hello","hello2",...);
	//弹出(拿出)数组中的数据,弹出最后一个数据
	arr.pop();	//每调用一次弹出一个
	//-------------------队列式------------------------------
	//向数组中加入数据,数据在数组的第一个
	arr.unsift();
	//弹出(拿出)数组中最后一个数据
	arr.sift();
	//数组对象属性
	constructor
	length
	prototype
	//数组对象方法
	concat
	join
	pop
	push
	reverse
	shift
	slice
	sort
	splice
	toLocaleString
	toString
	unshift
	valueOf
//=============================================================
//-----------------------常用函数------------------------------
	indexOf()			//指定的字符串在字符串中首次出现的位置
	substr(start,length)	//截取并返回指定长度字符串
	substring(start,end)	//截取并返回指定位置的字符串
	split(',')			//将字符串按指定的符号分割成数组
	parseInt()			//转换成整型
	parseFloat()			//转换成浮点型
	toFixed(位数)		//限制小数位数
	//背景颜色属性
	document.bgColor="yellow";
	//随机更改背景颜色例
	//Math.random() 返回0到1之间的随机数
	var colors=["red","blue","yellow","green"];
	document.bgColor=colors[Math.floor(Math.random()*colors.length)];
//=============================================================
//--------------------在js中添加方法自定义方法----------------
	String.prototype.trim=function(){
		return this.replace(/(^\s*)|(\s*$)/g, "");
	}
	String.prototype.ltrim=function(){
		return this.replace(/(^\s*)/g,"");
	}
	String.prototype.rtrim=function(){
		return this.replace(/(\s*$)/g,"");
	}
//=============================================================
//---------------------js闭包实例-----------------------------
/* 
不加~的时候	function(x){}(i)
对比下匿名函数的声明方式 function (){}
不过是多了个(i)而已
此时浏览器解释器会把它当作声明来解析
但规范中并没有说你能在函数声明後面直接调用的吧
这时我们需要给点前提条件
让解释器去知道我们希望进行匿名函数的直接调用
以下方法都是可行的
a = function(){}()
~function(){}()
!function(){}()
+function(){}()
void function(){}()
(function(){})()
 */
var del = document.getElementsByName('del');
for(var i = 0;i < del.length;i++){
	~function(x){
		del[x].onclick = function (){
			this.parentNode.style.backgroundColor = 'red';
			alert(x);//点那个弹那个
		}
	}(i);
}
//=============================================================
//-----------------------阻止submit提交------------------------
//其中submit为表单提交对象,用onclick事件
submit.onclick = function (){
	if(username.value == ''){
		//方法一:
		//submit.disabled = true;
		//方法二:
		return false;
	}
}
//=====================格式化时间戳===========================
//-------------------------------------------------------------
function getLocalTime(nS) { 
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " "); 
} 
//=============================================================
//-------------------------------------------------------------