js常用函数总结
字符串函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
indexOf 返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。 var index1 = a.indexOf("l"); //index1 = 2 var index2 = a.indexOf("l",3); //index2 = 3 lastIndexOf 返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 。 var index1 = lastIndexOf('l'); //index1 = 3 var index2 = lastIndexOf('l',2) //index2 = 2 slice 提取字符串的一部分,并返回一个新字符串(与 substring 相同)。 var sub_string1 = a.slice(1); //sub_string1 = "ello" var sub_string2 = a.slice(1,4); //sub_string2 = "ell" substring 返回字符串的一个子串,传入参数是起始位置和结束位置。 var sub_string1 = a.substring(1); //sub_string1 = "ello" var sub_string2 = a.substring(1,4); //sub_string2 = "ell" substr 返回字符串的一个子串,传入参数是起始位置和长度 var sub_string1 = a.substr(1); //sub_string1 = "ello" var sub_string2 = a.substr(1,4); //sub_string2 = "ello" toLowerCase 将整个字符串转成小写字母。 var lower_string = a.toLowerCase(); //lower_string = "hello" toUpperCase 将整个字符串转成大写字母。 var upper_string = a.toUpperCase(); //upper_string = "HELLO" concat 将两个或多个字符的文本组合起来,返回一个新的字符串。 var a = "hello"; var b = ",world"; var c = a.concat(b); alert(c); //c = "hello,world" split 通过将字符串划分成子串,将一个字符串做成一个字符串数组。 var arr1 = a.split(""); //arr1 = [h,e,l,l,o] charAt 返回指定位置的字符。 var get_char = a.charAt(0); //get_char = "h" length 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。 var len = a.length(); //len = 5 match 检查一个字符串匹配一个正则表达式内容,如果么有匹配返回 null。 var re = new RegExp(/^\w+$/); var is_alpha1 = a.match(re); //is_alpha1 = "hello" var is_alpha2 = b.match(re); //is_alpha2 = null replace 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。 var result1 = a.replace(re,"Hello"); //result1 = "Hello" var result2 = b.replace(re,"Hello"); //result2 = ",world" search 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。 var index1 = a.search(re); //index1 = 0 var index2 = b.search(re); //index2 = -1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//去除前后空格 String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } //得到中间的字符串,注意从0开始 String.prototype.Mid = function(start,len) { return this.substr(start,len); } //在字符串里查找另一字符串:位置从0开始 String.prototype.InStr = function(str) { if(str==null) { str = ""; } return this.indexOf(str); } //在字符串里反向查找另一字符串:位置0开始 String.prototype.InStrRev = function(str) { if(str==null) { str = ""; } return this.lastIndexOf(str); } //是否是正确的IP地址 String.prototype.isIP = function() { var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; if (reSpaceCheck.test(this)) { this.match(reSpaceCheck); if (RegExp.$1 <= 255 && RegExp.$1 >= 0 && RegExp.$2 <= 255 && RegExp.$2 >= 0 && RegExp.$3 <= 255 && RegExp.$3 >= 0 && RegExp.$4 <= 255 && RegExp.$4 >= 0) { return true; } else { return false; } } else { return false; } } //是否是正确的长日期 String.prototype.isLongDate = function() { var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); if(r==null) { return false; } var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); } //是否是正确的短日期 String.prototype.isShortDate = function() { var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null) { return false; } var d = new Date(r[1], r[3]-1, r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } //是否是正确的日期 String.prototype.isDate = function() { return this.isLongDate()||this.isShortDate(); } //是否是手机 String.prototype.isMobile = function() { return /^0{0,1}13[0-9]{9}$/.test(this); } //是否是邮件 String.prototype.isEmail = function() { return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this); } //是否是邮编(中国) String.prototype.isZipCode = function() { return /^[\\d]{6}$/.test(this); } //是否是有汉字 String.prototype.existChinese = function() { //[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號 return /^[\x00-\xff]*$/.test(this); } //是否是合法的文件名/目录名 String.prototype.isFileName = function() { return !/[\\\/\*\?\|:"<>]/g.test(this); } //是否是有效链接 String.prototype.isUrl = function() { return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this); } //是否是有效的身份证(中国) String.prototype.isIDCard = function() { var iSum=0; var info=""; var sId = this; var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙 江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖 北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}; if(!/^\d{17}(\d|x)$/i.test(sId)) { return false; } sId=sId.replace(/x$/i,"a"); //非法地区 if(aCity[parseInt(sId.substr(0,2))]==null) { return false; } var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); var d=new Date(sBirthday.replace(/-/g,"/")) //非法生日 if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())) { return false; } for(var i = 17;i>=0;i--) { iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11); } if(iSum%11!=1) { return false; } return true; } //检测身份证号 18和15 function checkIdcard(num) { console.info(num); num = num.toLocaleUpperCase(); console.info(num); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { return false; } //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 //下面分别分析出生日期和校验位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); //检查生日日期是否正确 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { return false; } else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return true; } } if (len == 18) { re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); //检查生日日期是否正确 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { return false; } else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) { return false; } return true; } } return false; }; //是否是有效的电话号码(中国) String.prototype.isPhoneCall = function() { return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(this); } //是否是颜色(#FFFFFF形式) String.prototype.IsColor = function() { var temp = this; if (temp=="") return true; if (temp.length!=7) return false; return (temp.search(/\#[a-fA-F0-9]{6}/) != -1); } //对字符串进行Html编码 String.prototype.toHtmlEncode = function() { var str = this; str=str.replace(/&/g,"&"); str=str.replace(/</g,"<"); str=str.replace(/>/g,">"); str=str.replace(/\'/g,"'"); str=str.replace(/\"/g,"""); str=str.replace(/\n/g,"<br>"); str=str.replace(/\ /g," "); str=str.replace(/\t/g," "); return str; } //转换成日期 String.prototype.toDate = function() { try { return new Date(this.replace(/-/g, "\/")); } catch(e) { return null; } }
日期函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//创建新的 Date 对象 语法: new Date(); new Date(year [, month [, date [, hour [, minute [, second [, millisecond ]]]]]] ); 参数: year 是一个 0 到 99 之间的整数,对应于 1900 到 1999 年,或者为四位数字指定确定的年份; month 是一个 0 (一月) 到 11 (十二月) 之间的整数,这个参数是可选的; date 是一个 1 到 31 之间的整数,这个参数是可选的; hour 是一个 0 (0:00am) 到 23 (11:00pm) 之间的整数,这个参数是可选的; minute 是一个 0 到 59 之间的整数,这个参数是可选的; second 是一个 0 到 59 之间的整数,这个参数是可选的; millisecond 是一个 0 到 999 之间的整数,这个参数是可选的; var d = new Date(); //Thu Jul 02 2015 18:08:26 GMT+0800 var d2 = new Date(2010, 1, 1, 2, 2, 2, 300); //Mon Feb 01 2010 02:02:02 GMT+0800
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//获取时间 ·getFullYear | 根据本地时间获取当前年份(四位数字) ·getYear | 根据本地时间获取当前缩写年份(当前年份减去1900) ·getMonth | 根据本地时间获取当前月份(注意从0开始:0-Jan,1-Feb...) ·getDate | 根据本地时间获取当前日期(本月的几号) ·getHours | 根据本地时间获取当前小时数(24小时制,0-23) ·getMinutes | 根据本地时间获取当前分钟数 ·getSeconds | 根据本地时间获取当前秒数 ·getMilliseconds | 根据本地时间获取当前毫秒数 ·getTime | 获取UTC格式的从1970.1.1 0:00以来的毫秒数 ·getTimezoneOffset | 获取当前时间和UTC格式的偏移值(以分钟为单位) ·getDay | 根据本地时间获取今天是星期几(0-Sunday,1-Monday...) //设置时间 ·setFullYear | 设置当前年份(四位数字) ·setYear | 设置当前缩写年份(当前年份减去1900) ·setMonth | 设置当前月份(注意从0开始:0-Jan,1-Feb...) ·setDate | 设置当前日期(本月的几号) ·setHours | 设置当前小时数(24小时制,0-23) ·setMinutes | 设置当前分钟数 ·setSeconds | 设置当前秒数 ·setMilliseconds | 设置当前毫秒数 ·setTime | 设置UTC格式的从1970.1.1 0:00以来的毫秒数 //其他方式 ·setUTCDate | 设置UTC格式的当前日期(本月的几号) ·setUTCFullYear | 设置UTC格式的当前年份(四位数字) ·setUTCHours | 设置UTC格式的当前小时数(24小时制,0-23) ·setUTCMilliseconds | 设置UTC格式的当前毫秒数 ·setUTCMinutes | 设置UTC格式的当前分钟数 ·setUTCMonth | 设置UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...) ·setUTCSeconds | 设置UTC格式的当前秒数 ·getUTCDate | 获取UTC格式的当前日期(本月的几号) ·getUTCDay | 获取UTC格式的今天是星期几(0-Sunday,1-Monday...) ·getUTCFullYear | 获取UTC格式的当前年份(四位数字) ·getUTCHours | 获取UTC格式的当前小时数(24小时制,0-23) ·getUTCMilliseconds | 获取UTC格式的当前毫秒数 ·getUTCMinutes | 获取UTC格式的当前分钟数 ·getUTCMonth | 获取UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...) ·getUTCSeconds | 获取UTC格式的当前秒数 ·toString | 将日期时间值转换成"日期/时间"形式的字符串值 ·Date.UTC | 返回指定的UTC格式日期时间的固定时间值
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//--------------------------------------------------- // 判断闰年 //--------------------------------------------------- Date.prototype.isLeapYear = function() { return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0))); } //+--------------------------------------------------- //| 求两个时间的天数差 日期格式为 YYYY-MM-dd //+--------------------------------------------------- function daysBetween(DateOne,DateTwo) { var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-')); var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1); var OneYear = DateOne.substring(0,DateOne.indexOf ('-')); var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-')); var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1); var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-')); var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000); return Math.abs(cha); } //+--------------------------------------------------- //| 日期计算 //+--------------------------------------------------- Date.prototype.DateAdd = function(strInterval, Number) { var dtTmp = this; switch (strInterval) { case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number)); case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number)); case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number)); case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number)); case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number)); case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); } } //+--------------------------------------------------- //| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串 //+--------------------------------------------------- Date.prototype.DateDiff = function(strInterval, dtEnd) { var dtStart = this; if (typeof dtEnd == 'string' )//如果是字符串转换为日期型 { dtEnd = StringToDate(dtEnd); } switch (strInterval) { case 's' :return parseInt((dtEnd - dtStart) / 1000); case 'n' :return parseInt((dtEnd - dtStart) / 60000); case 'h' :return parseInt((dtEnd - dtStart) / 3600000); case 'd' :return parseInt((dtEnd - dtStart) / 86400000); case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7)); case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1); case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear(); } } //+--------------------------------------------------- //| 日期输出字符串,重载了系统的toString方法 //+--------------------------------------------------- Date.prototype.toString = function(showWeek) { var myDate= this; var str = myDate.toLocaleDateString(); if (showWeek) { var Week = ['日','一','二','三','四','五','六']; str += ' 星期' + Week[myDate.getDay()]; } return str; } //+--------------------------------------------------- //| 日期合法性验证 //| 格式为:YYYY-MM-DD或YYYY/MM/DD //+--------------------------------------------------- function IsValidDate(DateStr) { var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格; if(sDate=='') return true; //如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为'' //数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式 var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,''); if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D { var t=new Date(sDate.replace(/\-/g,'/')); var ar = sDate.split(/[-/:]/); if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate()) { //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。'); return false; } } else { //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。'); return false; } return true; } //+--------------------------------------------------- //| 日期时间检查 //| 格式为:YYYY-MM-DD HH:MM:SS //+--------------------------------------------------- function CheckDateTime(str) { var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/; var r = str.match(reg); if(r==null)return false; r[2]=r[2]-1; var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; if(d.getHours()!=r[4])return false; if(d.getMinutes()!=r[5])return false; if(d.getSeconds()!=r[6])return false; return true; } //+--------------------------------------------------- //| 把日期分割成数组 //+--------------------------------------------------- Date.prototype.toArray = function() { var myDate = this; var myArray = Array(); myArray[0] = myDate.getFullYear(); myArray[1] = myDate.getMonth(); myArray[2] = myDate.getDate(); myArray[3] = myDate.getHours(); myArray[4] = myDate.getMinutes(); myArray[5] = myDate.getSeconds(); return myArray; } //+--------------------------------------------------- //| 取得日期数据信息 //| 参数 interval 表示数据类型 //| y 年 m月 d日 w星期 ww周 h时 n分 s秒 //+--------------------------------------------------- Date.prototype.DatePart = function(interval) { var myDate = this; var partStr=''; var Week = ['日','一','二','三','四','五','六']; switch (interval) { case 'y' :partStr = myDate.getFullYear();break; case 'm' :partStr = myDate.getMonth()+1;break; case 'd' :partStr = myDate.getDate();break; case 'w' :partStr = Week[myDate.getDay()];break; case 'ww' :partStr = myDate.WeekNumOfYear();break; case 'h' :partStr = myDate.getHours();break; case 'n' :partStr = myDate.getMinutes();break; case 's' :partStr = myDate.getSeconds();break; } return partStr; } //+--------------------------------------------------- //| 取得当前日期所在月的最大天数 //+--------------------------------------------------- Date.prototype.MaxDayOfDate = function() { var myDate = this; var ary = myDate.toArray(); var date1 = (new Date(ary[0],ary[1]+1,1)); var date2 = date1.dateAdd(1,'m',1); var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd')); return result; } //+--------------------------------------------------- //| 取得当前日期所在周是一年中的第几周 //+--------------------------------------------------- Date.prototype.WeekNumOfYear = function() { var myDate = this; var ary = myDate.toArray(); var year = ary[0]; var month = ary[1]+1; var day = ary[2]; document.write('< script language=VBScript\> \n'); document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n'); document.write('result = DatePart('ww', myDate) \n'); document.write(' \n'); return result; } //+--------------------------------------------------- //| 字符串转成日期类型 //| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd //+--------------------------------------------------- function StringToDate(DateStr) { var converted = Date.parse(DateStr); var myDate = new Date(converted); if (isNaN(myDate)) { //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-'; var arys= DateStr.split('-'); myDate = new Date(arys[0],--arys[1],arys[2]); } return myDate; }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
js 时间间隔执行函数 JavaScript 支持暂停和时间间隔,这课有效的告诉浏览器应该何时执行某行代码。暂停就是在指定的毫秒数。 1、setTimeout('function',time): 第一个参数可以是代码串,也是可以函数指针,第二个参数是暂停时间(秒)。 function time(){ alert('执行'); } window.onload=function(){ setTimeout(time,1000); } 这个表示在一秒后执行time()函数,调用setTimeout()时,它创见一个数字暂停ID,与操作系统的进程ID相似。暂停ID本质上是要延迟的进程的ID,在调用setTimeout()时后,就不应该在执行其他代码。想取消还未执行的暂停,可以用clearTimeout()来取消, 2、clearTimeout(): 接受一个参数:执行setTimeout()时,创建的暂停ID; <script> var s = 0; function run(){ s = setTimeout(a,1000) } function a(){ alert(2) } function stop(){ clearTimeout(s) } </script> <input type='button' value='run' onclick='run()'> <input type='button' value='stop' onclick='stop()'> 在按下run时出发run()函数,执行setTimeout()并将创建的ID传给s,在一秒后执行a(),如果在1秒内点击stop就会停止setTimeout()函数的执行。 2、还有一种执行方法,与暂停类似,setInterval()就是时间间隔表示在某段时间内不停的去执行一行代码,除了停止它否则会一直执行下去,这就是与setTimeout()不同之处,一个是暂停多少秒后执行一次,而setInterval()是一直执行。 function time(){ alert('执行'); } window.onload=function(){ setInterval(time,1000); } 1秒内不停的调用time().和setTimeout()一样setInterval()也有停止它的函数,clearInterval()停止函数执行。 <script> var s = 0; function run(){ s = setInterval(a,1000) } function a(){ alert(2) } function stop(){ clearInterval(s) } </script> <input type='button' value='run' onclick='run()'> <input type='button' value='stop' onclick='stop()'> 在按下run时出发run()函数,执行setInterval()并将创建的ID传给s,在一秒后执行a(),如果在1秒内点击stop就会停止setInterval()函数的执行。否则就会一直执行a()函数,这是与setTimeout()的不同之处 如何选择使用那种方法,在执行一组代码前要等待一段时间,就使用暂停setTimeout(),如果要反复的去执行一组代码时就用间隔setInterout().
数值函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
常数和乘方函数 Math.E 自然对数的底(为常数) 2.718 Math.LN10 10的自然对数 2.302 Math.LN2 2的自然对数 0.693 Math.PI 圆周率 3.1415 Math.SQRT1_2 1/2的平方根 0.707 Math.SQRT2 2的平方根 1.414 Math.sqrt(x) X的平方根 更X的值有关 Math.pow(x, n) 返回x的n次方的数值 参数为x和n Math.log(n) 返回n的自然对数 参数为n Math.exp(n) 返回e的n次方的数值 参数为n 三角函数 Math.cos(x) X的余弦函数 Math.sin(x) X的正弦函数 Math.tan(x) X的正切函数 Math.acos(y) X的反余弦函数 Math.asin(y) X的反正弦函数 Math.atan(y) X的反正切函数 //这里注意:参数x和以及反函数的返回数值的单位都为弧度(比如 PI弧度=180度) 舍入函数和随机数字 Math.random() 产生从0到1的随机数 Math.round(x) 取最接近整数x的数值 Math.floor(x) 取最接近整数x并且比x小的数值 Math.ceil(x) 取最接近整数x并且比x大的数值 Math.min(a, b, c) 返回参数列表中最小的数值 Math.max(a, b, c) 返回参数列表中最大的数值 数值转换 parseInt() 将变量转换为整数 parseFloat() 将变量转换为小数 isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字,是数字返回false,不是数字返回true var n = '100.10'; var nInt = parseInt(n); //nInt=100 var nFloat = parseFloat(n); //nFloat=100.1 alert(isNaN('100')); //false alert(isNaN('hello')); //true
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/*检验数字整形*/ /*num:接受检验的字符*/ /*strAlert:错误提示*/ /*numMin:数值最小范围(-1表示不限制最小值)*/ /*numMax:数值最大范围(-1表示不限制最大值)*/ function CheckNumInt(num, strAlert, numMin, numMax) { if ($.trim(num) == "") { $.Zebra_Dialog('<strong>' + strAlert + '不能为空 !</strong>'); return false; } if (isNaN(num)) { $.Zebra_Dialog('<strong>' + strAlert + '需要输入数字类型 !</strong>'); return false; } else { if (parseInt(numMin) != -1) { if (parseInt(num) < parseInt(numMin)) { $.Zebra_Dialog('<strong>' + strAlert + '的数值不能小于' + numMin + ' !</strong>'); return false; } } if (parseInt(numMax) != -1) { if (parseInt(num) > parseInt(numMax)) { $.Zebra_Dialog('<strong>' + strAlert + '的数值不能大于' + numMax + ' !</strong>'); return false; } } return true; } }; /*检测是否是小数*/ /*value:接受检验的字符*/ /*strAlert:错误提示*/ /*numlength:小数最长的位数*/ function CheckNumDecimal(value, strAlert, numlength) { if ($.trim(value) == "") { $.Zebra_Dialog('<strong>' + strAlert + '不能为空 !</strong>'); return false; } if (isNaN(value)) { $.Zebra_Dialog('<strong>' + strAlert + '需要输入小数类型 !</strong>'); return false; } if (value != null && value != '') { var decimalIndex = value.indexOf('.'); if (decimalIndex == '-1') { return true; } else { var decimalPart = value.substring(decimalIndex + 1); if (decimalPart.length > parseInt(numlength)) { $.Zebra_Dialog('<strong>' + strAlert + '最多可以输入位' + numlength + '小数 !</strong>'); return false; } else { return true; } } } return false; }; //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 function accMul(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); } //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 //调用:accDiv(arg1,arg2) //返回值:arg1除以arg2的精确结果 function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace(".", "")); r2 = Number(arg2.toString().replace(".", "")); return (r1 / r2) * pow(10, t2 - t1); } } //返回n位小数 //x:原始小数 //digit:要返回小数的位数 function toDecimal(x, digit) { var f_x = parseFloat(x); var d = parseInt(digit); var dmul = Math.pow(10, d); if (isNaN(f_x)) { alert('您试图将字符串转换为数字,请检查!'); return false; } if (isNaN(d)) { alert('您试图将小数位数转换为数字,请检查!'); return false; } var f_x = Math.round(x * dmul) / dmul; var s_x = f_x.toString(); var pos_decimal = s_x.indexOf('.'); if (pos_decimal < 0) { pos_decimal = s_x.length; s_x += '.'; } while (s_x.length <= pos_decimal + d) { s_x += '0'; } return s_x; }
js事件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
a.窗口事件,只在body和frameset元素中才有效
onload 页面或图片加载完成时
onunload 用户离开页面时
b.表单元素事件,在表单元素中才有效
onchange 框内容改变时
onsubmit 点击提交按钮时
onreset 重新点击鼠标按键时
onselect 文本被选择时
onblur 元素失去焦点时
onfocus 当元素获取焦点时
c.键盘事件,在base,bdo,br,frame,frameset,head,html,iframe,meta,param,script,style,title元素里都无效
onkeydown 按下键盘按键时
onkeypress 按下或按住键盘按键时
onkeyup 放开键盘按键时
d.在base,bdo,br,frame,frameset,head,html,iframe,meta,param,script,style,title元素里都无效
onclick 鼠标点击一个对象时
ondblclick 鼠标双击一个对象时
onmousedown 鼠标被按下时
onmousemove 鼠标被移动时
onmouseout 鼠标离开元素时
onmouseover 鼠标经过元素时
onmouseup 释放鼠标按键时
e.其他
onresize 当窗口或框架被重新定义尺寸时
onabort 图片下载被打断时
onerror 当加载文档或图片时发生错误时
自定义方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//获取页面url function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return ''; } //生成新的GUID function newGuid() { var guid = ""; for (var i = 1; i <= 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; } return guid; } //将数字转换为人民币大写形式 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆 ", "伍", "陆", "柒", "捌", "玖"); //汉字的数字 var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位 var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位 var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位 var cnInteger = "整"; //整数金额时后面跟的字符 var cnIntLast = "元"; //整型完以后的单位 var maxNum = 999999999999999.9999; //最大处理的数 字 var IntegerNum; //金额整数部分 var DecimalNum; //金额小数部分 var ChineseStr = ""; //输出的中文金额字符串 var parts; //分离金额后用的数组,预定义 if (money == "") { return ""; } money = parseFloat(money); if (money >= maxNum) { alert('超出最大处理数字'); return ""; } if (money == 0) { ChineseStr = cnNums[0] + cnIntLast + cnInteger; return ChineseStr; } money = money.toString(); //转换为字符串 if (money.indexOf(".") == -1) { IntegerNum = money; DecimalNum = ''; } else { parts = money.split("."); IntegerNum = parts[0]; DecimalNum = parts[1].substr(0, 4); } if (parseInt(IntegerNum, 10) > 0) { //获取整型部分 转换 var zeroCount = 0; var IntLen = IntegerNum.length; for (var i = 0; i < IntLen; i++) { var n = IntegerNum.substr(i, 1); var p = IntLen - i - 1; var q = p / 4; var m = p % 4; if (n == "0") { zeroCount++; } else { if (zeroCount > 0) { ChineseStr += cnNums[0]; } zeroCount = 0; //归零 ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { ChineseStr += cnIntUnits[q]; } } ChineseStr += cnIntLast; //整型部分处理完毕 } if (DecimalNum != '') { //小数部分 var decLen = DecimalNum.length; for (var i = 0; i < decLen; i++) { var n = DecimalNum.substr(i, 1); if (n != '0') { ChineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (ChineseStr == '') { ChineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (DecimalNum == '') { ChineseStr += cnInteger; } return ChineseStr; }