一.JavaScript函数学习
<html>
<head>
<title>js的函数学习</title>
<meta charset="UTF-8"/>
<!--
js的函数学习一:
作用:功能代码块的封装。减少代码的冗余。
1、函数的声明:
方式一:function 函数名(形参名1,形参名2……){执行体}
方式二:var 函数名=new Function("形参1","形参2"……,"函数执行体");
注意:此声明表明在js中函数是作为对象存在的。
方式三:var 变量名=function(形参名1,形参名2……){函数执行体}
2、函数的参数
js中的函数在调用时,形参可以不赋值,不会报错
js中的函数在调用时,形参赋值可以不全部赋值,不会报错,但是实参会依次进行赋值。
3、函数的返回值
在js中如果函数有返回值则直接返回,没有返回值默认返回undefined
注意:
js的代码声明区域和执行区域是一起的,都是在js代码的代码域中。
-->
<!--声明js代码域-->
<script type="text/javascript">
function test1(a1,a2)
{
alert("函数声明一");
}
var test2=new Function("a1","a2","alert('函数声明二'+a1)");
var test3=function(a1,a2){
alert("我是函数声明三");
}
</script>
</head>
<body>
<h3>js的函数学习</h3>
</body>
</html>
<html>
<head>
<title>js的函数学习二</title>
<meta charset="UTF-8"/>
<!--
js的函数学习二:
1、函数的执行符:
在js中函数的执行符值()
没有小括号则函数名其实就是一个变量
加上小括号则会函数会被执行。
2、函数作为实参传递
在js中函数是可以作为实参进行传递的。
function testobj(a){
alert(a());
}
var testParam=function(){
alert("我是函数参数");
}
testobj(testParam());
-->
<!--声明js代码域-->
<script type="text/javascript">
//开发中经常用的传递方式,testObj2函数在被调用的时候,实参必须是一个函数对象
function testObj2(fn){
fn();
}s
testObj2(function(){
alert("开发");
})
</script>
</head>
<body>
<h3>js的函数学习二</h3>
</body>
</html>
二.JavaScript类和对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js中的类和对象学习</title>
<meta charset="UTF-8"/>
<!--
js中的类学习:
1、类的声明:
function 类名(形参1,形参2……){
this.属性名1=形参1;
this.属性名2=形参2;
……
this.属性名=fn
}
2、类的使用:
var 对象名=new 类名(实参1,实参2……);
注意:
js中类的内容只是对象的公共部分,每个对象还可以自定义的进行扩充。
3、类的"继承":prototype关键字
同过prototype关键字实现了不同对象之间的数据共享。
作用1:实现某个类的所有子对象的方法区对象的共享,节省内存
-->
<!--声明js代码域-->
<script type="text/javascript">
//1、类的声明--person
function Person(name,age){
Person.prototype=new User();
this.name=name;
this.age=age;
this.fav="唱歌";
}
function User(uname,pwd){
this.uname=uname;
this.pwd=pwd;
}
Person.prototype.test=function(){alert("嘿嘿")};
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js的自定义对象</title>
<meta charset="UTF-8"/>
<!--
js创建自定义对象
对象的作用:用来存储整体数据。
原因:很多时候我们没有办法预先知道一个对象应该有哪些属性,所以只能临时的创建一个对象来自定义属性存储数据。来保证数据的完成性
应用:
Ajax中会使用。
使用:
1、创建自定义对象
var 对象名=new Object();
对象名.属性名1=属性值1;
对象名.属性名2=属性值2;
对象名.属性名3=属性值3;
……
var 对象名={};
对象名.属性名1=属性值1;
对象名.属性名2=属性值2;
对象名.属性名3=属性值3;
……
2、一般用来存储数据,不会再自定义对象中存储函数对象。
3、js中的对象属性和内容是可以自定义的扩充的,不是依赖于类的声明的,类只是对象公共部分的一种声明,是为了节省代码的冗余的。
-->
<!--声明js代码域-->
<script type="text/javascript">
var obj=new Object();
obj.name="张三";
obj.age=23;
obj.test=function(){
alert("我是obj");
}
</script>
</head>
<body>
</body>
</html>
三.JavaScript常用对象和方法
<html>
<head>
<title>js的常用对象和方法</title>
<meta charset="UTF-8"/>
<!--
常用的对象和方法:
1、String
2、Date
3、Math
4、Global
-->
<!--声明js代码域-->
<script type="text/javascript">
//1、String对象学习
var str=new String("abcdefg");//声明String对象存储字符串
var str2="MNP";//简写形式
//字符串大小写的转换
alert(str.toUpperCase());//将字符串转换为大写
alert(str2.toLowerCase());//将字符串转换为小写
//字符串的切割
var s="哈哈,嘿嘿,呵呵";
var s1=s.split(",");//按照指定的字符切割字符串,返回数组。
alert(s1.length);
//字符串的截取
var s="abcdef";
alert(s.substr(1,3));//从指定的开始位置截取指定长度的子字符串
alert(s.substring(1,3));//从指定的开始位置和指定的结束位置截取子字符串,含头不含尾。
//查找子字符串第一次出现的角标
var s="abcdefg";
alert(s.indexOf("dd"));//返回指定子字符串第一次出现的角标,没有则返回-1;
//2、Date对象
//创建Date对象
var d=new Date();
//alert(d);
//获取当前年份
alert(d.getYear());//返回的是1900年开始距今的年分数
alert(d.getFullYear());//返回的是当前的年份
alert(d.getMonth()+1);//返回的当前月份的角标值,需要+1
alert(d.getDate());//返回的是当前的日期数
alert(d.getDay());//返回的是当前的星期数,但是周天会返回值为0;
alert(d.getHours());//返回当前时间的小时数
alert(d.getMinutes());//返回当前时间的分钟数
alert(d.getSeconds());//返回当前时间的秒数
alert(d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
//3、Math对象学习
//Math在使用的时候不能new,使用Math.方法名调用即可。
//创建随机数字
alert("Math.random():"+Math.random());//返回0-1之间的随机数字,含0不含1。
alert(1000+Math.random()*9000);
//向下取整
alert(Math.floor(1000+Math.random()*9000));
//向上取整
alert(Math.ceil("12.34"));
//四舍五入
alert(Math.round(12.12));
alert(Math.round(12.65));
//数值比较:求取最小值,求取最大值
alert(Math.min(12,13,5,78));//获取最小值
alert(Math.max(12,3,4,56));//获取最大值
//4、Global对象学习
//改对象从不直接使用并且不能new,也是就直接写方法名调用即可。
//使用eval将字符串转换为可执行的js代码
var str="var a=123";
eval(str);
alert(a);
//使用isNaN判断是否值NaN
alert(isNaN("123"));
//获取字符中的浮点数
alert(parseFloat("12.34a34a"));
</script>
</head>
<body>
</body>
</html>
四.JavaScript事件机制学习
<html>
<head>
<title>js的事件机制学习1</title>
<meta charset="UTF-8"/>
<!--
js的事件机制:
解释:当我们的行为动作满足了一定的条件后,会触发某类事务的执行。
作用:主要是结合js的函数来使用。
内容:
1、单双击事件
单击:onclick 当鼠标单击的时候会触发
双击:ondblclick 当鼠标双击的时候会被触发
2、鼠标事件
onmouseover 当鼠标悬停在某个HTML元素上的时候触发
onmousemove 当鼠标在某个HTML元素上移动的时候触发
onmouseout 当鼠标在某个HTML元素上移出的时候触发
3、键盘事件
onkeyup 当键盘在某个HTML元素上弹起的时候触发
onkeydown 当键盘在某个HTML元素上下压的时候触发
4、焦点事件
onfocus 当某个HTML元素获取焦点的时候触发
onblur 当某个HTML元素失去焦点的时候触发
5、页面加载事件
onload 当页面加载成功后触发。
注意:
js中添加事件的第一种方式:
在HTML上直接使用事件属性进行添加,属性值为所监听执行的函数。
js中的事件只有在当前HTML元素上有效。
一个HTML元素可以添加多个不同的事件。
一个事件可以监听触发多个函数的执行,但是不同的函数要使用分号间隔
-->
<!--声明js代码域-->
<script type="text/javascript">
</script>
</style>
</head>
<body>
</body>
</html>
<html>
<head>
<title>js的事件机制二</title>
<meta charset="UTF-8"/>
<!--
js的事件机制学习2:
1、给合适的HTML标签添加合适的事件
onchange----select下拉框
onload------body标签
单双击-------用户会进行点击动作的HTML元素
鼠标事件------用户会进行鼠标移动操作的。
键盘事件------用户会进行键盘操作的HTML元素。
2、给HTML元素添加多个事件时,注意事件之间的冲突
举个栗子:单击和双击
当事件的触发条件包含相同部分的时候,会产生事件之间的冲突。
3、事件的阻断
当事件所监听的函数的将返回值返回给事件时:
false:则会阻断当前事件所在的HTML标签的功能
true:则继续执行当前事件所在的HTML标签的功能
4、超链接调用js函数
<a href="javascript:函数名()">调用js函数</a>
-->
<script type="text/javascript">
</script>
</head>
<body>
</body>
</html>
五.Window对象学习
<html>
<head>
<title>window对象学习</title>
<meta charset="UTF-8"/>
<!--
BOM浏览器对象模型:是规范浏览器对js语言的支持(js调用浏览器本身的功能)。
BOM的具体实现是window对象
window对象使用学习:
1、window对象不用new,直接进行使用即可,类似Math的使用方式,window关键字可以省略不写。
2、框体方法
alert:警告框 提示一个警告信息,没有返回
confirm:确认框 提示用户选择一项操作(确定/取消)
点击确定 返回true
点击取消 返回false
prompt:提示框, 提示用某个信息的录入或者说收集
点击确定,返回当前用书录入的数据,默认返回空字符串
点击取消,返回null
3、定时和间隔执行方法
setTimeout:指定的时间后执行指定的函数
参数1:函数对象
参数2:时间,单位毫秒。
返回值:返回当前定时器的id
setInterval:每间隔指定的时间执行指定的函数
参数1:函数对象
参数2:时间,单位毫秒。
返回值:返回当前间隔器的id
clearTimeout:用来停止指定的定时器
参数:定时器的id
clearInterval:用来停止指定的间隔器
参数:间隔器的id
-->
<!--声明js代码域-->
<script type="text/javascript">
</script>
</head>
<body>
</body>
</html>
<html>
<head>
<title>js的window对象学习2</title>
<meta charset="UTF-8"/>
<!--
js的window对象学习
1、子窗口方法
window.open('子页面的资源(相对路径)','打卡方式','配置');
示例:window.open('son.html','newwindow','height=400, width=600, top=100px,left=320px, toolbar=yes, menubar=yes,
scrollbars=yes,resizable=yes,location=no, status=yes');
注意:
关闭子页面的方法window.close(),但是此方法只能关闭open方法打开的子页面。
2、子页面调用父页面的函数
window.opener.父页面的函数
js的window对象的常用属性
地址栏属性:location
window.location.href="新的资源路径(相对路径/URL)"
window.location.reload()重新加载页面资源
历史记录属性
window.history.forward() 页面资源前进,历史记录的前进。
window.history.back() 页面资源后退,历史记录后退
window.history.go(index) 跳转到指定的历史记录资源
注意window.history.go(0)相当于刷新。
屏幕属性
window.srceen.width;//获取屏幕的宽度分辨率
window.screen.height;//获取屏幕的高度分辨率
浏览器配置属性
主体面板属性(document)
-->
<!--声明js代码域-->
<script type="text/javascript">
</script>
</head>
<body>
</body>
</html>
六.document对象学习
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>document对象学习</title>
<!--
document对象学习:
1、document对象的概念
浏览器对外提供的支持js的用来操作HTML文档的一个对象,此对象封存的HTML文档的所有信息。
2、使用document
获取HTML元素对象
直接获取方式:
通过id
通过name属性值
通过标签名
通过class属性值
间接获取方式:
父子关系
子父关系
兄弟关系
-->
<!--声明js代码域-->
<script type="text/javascript">
</script>
<style type="text/css">
</style>
</head>
<body>
</body>
</html>
<html>
<head>
<title>js操作HTML的元素属性</title>
<meta charset="UTF-8"/>
<!--
js操作HTML元素属性学习:
获取元素对象
操作元素属性
获取:
元素对象名.属性名//返回当前属性的属性值。----固有
元素对象名.getAttribute("属性名");//返回自定义属性的值-----自定义
修改
元素对象名.属性名=属性值
元素对象名.setAttribute("属性名","属性值");//修改自定义属性的值----自定义
注意:
尽量的不要去修改元素的id值和name属性值。
使用自定义方式获取固有属性内容,value的值获取的是默认值,不能够获取到实时的用户数据。
-->
<!--声明js代码域-->
<script type="text/javascript">
//1、声明函数---固有属性
//获取属性值
function testField(){
//获取元素对象
var inp=document.getElementById("uname");
//获取元素属性值
alert(inp.type+":"+inp.name+":"+inp.id+":"+inp.value);
}
//修改元素属性值
function testField2(){
//获取元素对象
var inp=document.getElementById("uname");
//修改元素属性
inp.value="哈哈";
inp.type="button";
}
//2、声明函数---自定义属性
//获取
function testOwnField(){
//获取元素对象
var inp=document.getElementById("uname");
//获取自定义属性的值
alert(inp.getAttribute("abc"));
}
//修改
function testOwnField2(){
//获取元素对象
var inp=document.getElementById("uname");
//修改自定义属性的值
inp.setAttribute("abc","呵呵");
}
//3、使用自定义方式操作固有属性
function testOper(){
//获取元素对象
var inp=document.getElementById("uname");
//操作对象属性
alert(inp.getAttribute("type"));
alert(inp.getAttribute("value"));
}
</script>
</head>
<body>
<h3>js操作HTML的元素属性</h3>
<input type="button" name="" id="" value="测试获取元素属性--固有" onClick="testField()" />
<input type="button" name="" id="" value="测试修改元素属性--固有" onClick="testField2()" />
<input type="button" name="" id="" value="测试获取元素属性--自定义" onClick="testOwnField()" />
<input type="button" name="" id="" value="测试修改元素属性--自定义" onClick="testOwnField2()" />
<input type="button" name="" id="" value="测试操作元素自定义操作固有属性" onClick="testOper()" />
<hr />
用户名 : <input type="text" name="uname" id="uname" value="" abc="嘿嘿"/>
</body>
</html>
<html>
<head>
<title>js操作元素内容学习</title>
<meta charset="UTF-8"/>
<!--声明css-->
<style type="text/css">
#div01{
width: 200px;
height: 200px;
border: solid 1px orange;
}
</style>
<!--
操作元素内容学习:
获取元素对象
获取
元素对象名.innerHTML//返回当前元素对象的所有内容,包括HTML标签
元素对象名.innerHTML//返回当前元素对象的文本内容,不包括HTML标签
修改
元素对象名.innerHTML="新的值"//会将原有内容覆盖,并HTML标签会被解析
元素对象名.innerHTML=元素对象名.innerHTML+"新的值"//追加效果
元素对象名.innerText="新的值"//会将原有内容覆盖,但HTML标签不会被解析,会作为普通文本显示。
-->
<!--声明js代码域-->
<script type="text/javascript">
//1、获取元素内容
function getContext(){
//获取元素对象
var div=document.getElementById("div01");
//获取元素内容
alert(div.innerHTML);
alert(div.innerText);
}
//2、修改元素内容
function updateContext(){
//获取元素对象
var div=document.getElementById("div01");
//修改元素对象内容
div.innerHTML="<b>你先</b>";
}
function updateContext2(){
//获取元素对象
var div=document.getElementById("div01");
//修改元素对象内容
div.innerText="<b>你先</b>";
}
</script>
</head>
<body>
<h3>js操作元素内容学习</h3>
<input type="button" name="" id="" value="测试获取元素内容---innerHTML&innerText" οnclick="getContext()"/>
<input type="button" name="" id="" value="测试修改元素内容--innerHTML" οnclick="updateContext()"/>
<input type="button" name="" id="" value="测试修改元素内容--innerText" οnclick="updateContext2()"/>
<hr />
<div id="div01">
<b>前面</b>
<b>前面</b>
</div>
</body>
</html>
<html>
<head>
<title>js操作元素的样式</title>
<meta charset="UTF-8"/>
<!--声明css-->
<style type="text/css">
#showdiv{
width: 200px;
height: 200px;
border: solid 1px;
}
.common{
width: 200px;
height: 200px;
border: solid 1px;
}
.common2{
width: 200px;
height: 200px;
border: solid 1px;
background-color: aqua;
}
</style>
<!--
js操作元素样式:
获取元素对象
通过style属性
元素对象名.style.样式名="样式值"//添加或者修改
元素对象名.style.样式名=""//删除样式
注意:
以上操作,操作的是HTML的style属性声明中的样式。而不是其他css代码域中的样式。
通过className
元素对象名.className="新的值"//添加类选择器样式或者修改类选择器样式
元素对象名.className=""//删除类样式。
-->
<!--声明js代码域-->
<script type="text/javascript">
//js给元素操作样式---style
function testOperCss(){
//获取元素对象
var showdiv=document.getElementById("showdiv");
//添加元素样式
showdiv.style.backgroundColor="#FFA500";
//js修改元素样式
showdiv.style.border="solid 2px red";
//js删除样式
showdiv.style.border="";
}
//js操作样式--className
function testOperCss2(){
//获取元素对象
var div01=document.getElementById("div01");
//获取
alert(div01.className);
//添加或者修改
div01.className="common2";
//删除
div01.className="";
}
</script>
</head>
<body>
<h3>js操作元素的样式</h3>
<input type="button" name="" id="" value="测试操作元素样式--style" onClick="testOperCss()" />
<input type="button" name="" id="" value="测试操作元素样式--className" onClick="testOperCss2()" />
<hr />
<div id="showdiv" style="border: solid 2px blue;">
</div>
<div id="div01" class="common">
</div>
</body>
</html>
<html>
<head>
<title>js操作元素的文档结构</title>
<meta charset="UTF-8"/>
<!--
js操作HTML文档结构:
增加节点
删除节点
第一种方式:使用innerHTML
div.innerHTML=div.innerHTML+"内容"//增加节点
div.innerHTML=""//删除所有子节点
父节点.removeChild(子节点对象)//删除指定的子节点。
-->
<!--声明js代码域-->
<script type="text/javascript">
function testAdd(){
//获取元素对象
var showdiv=document.getElementById("showdiv");
//给div追加上传按钮
showdiv.innerHTML=showdiv.innerHTML+"<div><input type='file' value='' /><input type='button' value='删除' οnclick='delInp(this)'/></div>";
}
function delInp(btn){
//获取父级div
var showdiv=document.getElementById("showdiv");
//获取要删除的子div
var cdiv=btn.parentNode;
//父div删除子div
showdiv.removeChild(cdiv);
}
</script>
</head>
<body>
<h3>js操作元素的文档结构</h3>
<input type="button" name="" id="" value="继续上传" onClick="testAdd()"/>
<hr />
<div id="showdiv">
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js操作文档结构2</title>
<!--
js操作文档结构2:
获取元素对象
var obj=document.createElement("标签名");
元素对象名.appendChild(obj);
-->
<!--声明js代码域-->
<script type="text/javascript">
function testOper2(){
//获取元素对象
var showdiv=document.getElementById("showdiv");
//创建input元素对象
var inp=document.createElement("input");
inp.type="file";
//创建按钮元素对象
var btn=document.createElement("input");
btn.type="button";
btn.value="删除";
btn.οnclick=function(){
showdiv.removeChild(inp);
showdiv.removeChild(btn);
showdiv.removeChild(br);
}
//创建换行符
var br=document.createElement("br");
//将创建的元素对象存放到div中
showdiv.appendChild(inp);
showdiv.appendChild(btn);
showdiv.appendChild(br);
}
</script>
</head>
<body>
<h3>js操作文档结构2</h3>
<input type="button" name="" id="" value="继续上传" οnclick="testOper2()"/>
<hr />
<div id="showdiv">
</div>
</body>
</html>
<html>
<head>
<title>js操作form表单</title>
<meta charset="UTF-8"/>
<!--
js操作form:
获取form表单对象
使用id:var fm=document.getElementById("fm");
使用name属性:var frm=document.frm;
获取form下的所有表单元素对象集合
fm.elements
form表单的常用方法
表单对象.submit();//提交表单数据。
form的属性操作:
表单对象名.action="新的值"//动态的改变数据的提交路径
表单对象名.method="新的值"//动态的改变提交方式
js表单元素的通用属性
只读模式:
readonly="readonly"//不可以更改,但是数据可以提交
关闭模式:
disabled="disabled"//不可以进行任何的操作,数据不会提交。
-->
<script type="text/javascript">
//
function testForm(){
//获取form表对象
var fm=document.getElementById("fm");
//alert(fm);
//使用form表单的name属性值来获取
var frm=document.frm;
//alert(frm===fm);
//获取form表单元素对象集合
//alert(fm.elements.length);
//form表单的常用方法
//fm.submit();很重要
fm.reset();
//form的属性操作
fm.action="http://www.baidu.com/s";
}
</script>
</head>
<body>
<h3>js操作form表单</h3>
<input type="button" name="" id="" value="测试操作form" onClick="testForm()" />
<hr />
<form action="#" method="get" id="fm" name="frm">
<b>用户名:</b><input type="text" name="uname" id="uname" value="" readonly/><br /><br />
密码: <input type="password" name="pwd" id="pwd" value="" disabled="disabled"/><br /><br />
<input type="submit" name="" id="" value="登录" />
</form>
</body>
</html>
<html>
<head>
<title>操作表单元素</title>
<meta charset="UTF-8"/>
<!--
js操作多选框、单选框
被选中状态下在js中checked属性值为true,未选中状态为false;
js操作下拉框:
被选择的option对象在js中selected属性值为true,未选中为false
-->
<!--声明js代码域-->
<script type="text/javascript">
//多选框操作
function testCheckBox(){
//获取所有的多选元素对象数组
var favs=document.getElementsByName("fav");
//遍历数组
for(var i=0;i<favs.length;i++){
if(favs[i].checked){
alert(favs[i].value+":"+favs[i].checked);
}
}
}
//全选
function testCheckBox2(){
var favs=document.getElementsByName("fav");
for(var i=0;i<favs.length;i++){
favs[i].checked=true;
}
}
//反选
function testCheckBox3(){
var favs=document.getElementsByName("fav");
for(var i=0;i<favs.length;i++){
favs[i].checked=!favs[i].checked;
}
}
//操作下拉框
function testSel(){
//获取下拉框对象
var sel=document.getElementById("address");
//alert(sel.value);
//获取option对象集合
var os=sel.options;
for(var i=0;i<os.length;i++){
if(os[i].selected){
alert(os[i].value+":"+os[i].text);
}
}
}
</script>
</head>
<body>
<h3>操作表单元素</h3>
<hr />
<b>操作多选框</b><br /><br />
<input type="checkbox" name="fav" id="fav" value="1" />远走高飞<br />
<input type="checkbox" name="fav" id="fav" value="2" />当<br />
<input type="checkbox" name="fav" id="fav" value="3" />李白<br />
<input type="checkbox" name="fav" id="fav" value="4" />杜甫<br />
<input type="checkbox" name="fav" id="fav" value="5" />see you again<br />
<input type="checkbox" name="fav" id="fav" value="6" />fade<br /><br /><br />
<input type="button" name="" id="" value="播放" onClick="testCheckBox()"/>
<input type="button" name="" id="" value="全选" onClick="testCheckBox2()"/>
<input type="button" name="" id="" value="反选" onClick="testCheckBox3()"/>
<hr />
<select name="" id="address" onChange="testSel()">
<option value="0">--请选择--</option>
<option value="1" >北京</option>
<option value="2">上海</option>
<option value="3">广州</option>
</select>
</body>
</html>
<html>
<head>
<title>js校验form表单</title>
<meta charset="UTF-8"/>
<!--声明css代码域-->
<style type="text/css">
/*设置背景图片*/
body{
background-image: url(img/b.jpg);
}
/*设置tr样式*/
tr{
height: 40px;
}
/*设置div样式*/
#showdiv{
border: solid 1px #FF0000;
border-radius: 10px;
width: 500px;
margin: auto;
margin-top: 40px;
}
/*设置table*/
table{
margin: auto;
color: white;
}
span{
font-size:13px;
}
#codeSpan{
font-size:20px;
}
</style>
<!--声明js代码域-->
<script type="text/javascript">
//常见验证码
function createCode(){
//创建随机四位数字
var code=Math.floor(Math.random()*9000+1000);
//获取元素对象
var span=document.getElementById("codeSpan");
//将数字存放到span中
span.innerHTML=code;
}
//验证用户名
function checkUname(){
//获取用户的用户名信息
var uname=document.getElementById("uname").value;
//创建校验规则
var reg=/^[\u4e00-\u9fa5]{2,4}$/
//获取span对象
var span=document.getElementById("unameSpan");
//开始校验
if(uname=="" || uname==null){
//输出校验结果
span.innerHTML="用户名不能为空";
span.style.color="red";
return false;
}else if(reg.test(uname)){
//输出校验结果
span.innerHTML="用户名ok";
span.style.color="green";
return true;
}else{
//输出校验结果
span.innerHTML="用户名不符合规则";
span.style.color="red";
return false;
}
}
//验证密码
function checkPwd(){
//获取用户的密码信息
var pwd=document.getElementById("pwd").value;
//创建校验规则
var reg=/^[a-z]\w{5,7}$/;
//获取span对象
var span=document.getElementById("pwdSpan");
//开始校验
if(pwd=="" ||pwd==null){
//输出校验结果
span.innerHTML="*密码不能为空";
span.style.color="red";
return false;
}else if(reg.test(pwd)){
//输出校验结果
span.innerHTML="*密码ok";
span.style.color="green";
return true;
}else{
//输出校验结果
span.innerHTML="*密码格式不正确";
span.style.color="red";
return false;
}
checkPwd2();
}
//校验确认密码
function checkPwd2(){
//获取第一次密码
var pwd=document.getElementById("pwd").value;
//获取确认密码
var pwd2=document.getElementById("pwd2").value;
//获取span对象
var span=document.getElementById("pwd2Span");
//比较两次密码是否相同
if(pwd2==""||pwd2==null){
span.innerHTML="确认密码不能为空";
span.style.color="red";
return false;
}else if(pwd==pwd2){
span.innerHTML="确认密码ok";
span.style.color="green";
return true;
}else{
span.innerHTML="两次密码不一致";
span.style.color="red";
return false;
}
}
//校验手机号
function checkPhone(){
return checkField("phone",/^1[3,4,5,7,8]\d{9}$/);
}
//校验邮箱
function checkMail(){
return checkField("mail",/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+$/ )
}
//校验籍贯
function checkAddress(){
//获取用户选择的数据
var sel=document.getElementById("address").value;
//获取span
var span=document.getElementById("addressSpan");
//校验
if(sel!=0){
span.innerHTML="籍贯选择成功";
span.style.color="green";
return true;
}else{
span.innerHTML="籍贯不能为请选择";
span.style.color="red";
return false;
}
}
//校验爱好
function checkFav(){
//获取所有的爱好
var favs=document.getElementsByName("fav");
//获取span
var span=document.getElementById("favSpan");
//遍历
for(var i=0;i<favs.length;i++){
if(favs[i].checked){
span.innerHTML="爱好选择成功";
span.style.color="green";
return true;
}
}
span.innerHTML="爱好至少选则一项";
span.style.color="red";
return false;
}
//校验是否同意公司协议
function checkAgree(){
document.getElementById("sub").disabled=!document.getElementById("agree").checked;
}
//提交判断
function checkSub(){
checkUname();
checkPwd();
checkPwd2();
checkPhone();
checkMail();
checkAddress();
checkFav();
return checkUname()&&checkPwd()&&checkPwd2()&&checkPhone()&&checkMail()&&checkAddress()&&checkFav();
}
//封装校验:相同的保留,不同的传参。
function checkField(id,reg){
//获取用户数据
var inp=document.getElementById(id);
var va=inp.value;
var alt=inp.alt;
//创建校验规则
//获取span对象
var span=document.getElementById(id+"Span")
//开始校验
if(va=="" ||va==null){
//输出校验结果
span.innerHTML=alt+"不能为空";
span.style.color="red";
return false;
}else if(reg.test(va)){
//输出校验结果
span.innerHTML=alt+"ok";
span.style.color="green";
return true;
}else{
//输出校验结果
span.innerHTML=alt+"不符合规则";
span.style.color="red";
return false;
}
}
</script>
</head>
<body onLoad="createCode()">
<div id="showdiv">
<form action="#" method="get" onSubmit="return checkSub()">
<table>
<tr>
<td width="80px">用户名:</td>
<td width="200px">
<input type="text" name="uname" id="uname" value="" onBlur="checkUname()" alt="用户名"/><span id="unameSpan">*2-4位汉字</span>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="pwd" id="pwd" value="" onBlur="checkPwd()"/>
<span id="pwdSpan"></span>
</td>
</tr>
<tr>
<td>确认密码:</td>
<td>
<input type="password" name="pwd2" id="pwd2" value="" onBlur="checkPwd2()"/>
<span id="pwd2Span"></span>
</td>
</tr>
<tr>
<td>手机号:</td>
<td>
<input type="text" name="phone" id="phone" value="" alt="手机号" onBlur="checkPhone()"/>
<span id="phoneSpan"></span>
</td>
</tr>
<tr>
<td>邮箱:</td>
<td>
<input type="text" name="mail" id="mail" value="" alt="邮箱" onBlur="checkMail()"/>
<span id="mailSpan"></span>
</tr>
<tr>
<td>性别</td>
<td>
男 <input type="radio" name="sex" id="sex" value="0" checked="checked"/>
女 <input type="radio" name="sex" id="sex" value="1" />
</td>
</tr>
<tr>
<td>籍贯:</td>
<td>
<select name="address" id="address" onChange="checkAddress()">
<option value="0">--请选择--</option>
<option value="1">北京</option>
<option value="2">上海</option>
<option value="3">广州</option>
</select>
<span id="addressSpan"></span>
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" name="fav" id="" value="1" onClick="checkFav()"/>LOL
<input type="checkbox" name="fav" id="" value="2" onClick="checkFav()"/>睡觉
<input type="checkbox" name="fav" id="" value="3" onClick="checkFav()"/>吃饭<br />
<input type="checkbox" name="fav" id="" value="4" onClick="checkFav()"/>打豆豆
<input type="checkbox" name="fav" id="" value="5" onClick="checkFav()"/>看电影
<input type="checkbox" name="fav" id="" value="6" onClick="checkFav()" />听歌
<span id="favSpan"></span>
</td>
</tr>
<tr>
<td>个人介绍:</td>
<td>
<textarea name="intro" rows="4" cols="40" id="intro"></textarea>
</td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" name="code" id="code" value="" style="width: 100px;"/>
<span id="codeSpan" onClick="createCode()" style="background-image: url(img/code.jpg.gif);color: black;"></span>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="checkbox" name="" id="agree" value="" onClick="checkAgree()"/>是否同意本公司协议</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="" id="sub" value="立即注册" disabled="disabled"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<html>
<head>
<title>event对象学习</title>
<meta charset="UTF-8"/>
<!--
event对象学习:
1、event对象获取鼠标坐标
2、event对象获取键盘值
-->
<style type="text/css">
#showdiv{
width: 300px;
height: 300px;
border: solid 1px;
}
</style>
<script type="text/javascript">
function getMouse(event){
//获取event对象
var eve=event || window.event;//因为浏览器差异问题,使用此种方式获取event对象
var x=eve.clientX;
var y=eve.clientY;
alert(x+":"+y);
}
function getKey(event){
//获取event对象
var eve=event || window.event;//因为浏览器差异问题,使用此种方式获取event对象
var code=eve.keyCode;
alert(code);
}
</script>
</head>
<body>
<h3>event对象学习</h3>
<hr />
<div id="showdiv" onMouseMove="getMouse(event)">
</div>
<br /><br />
<input type="text" name="" id="" value="" onKeyDown="getKey(event)"/>
</body>
</html>