js常用函数总结
字符串函数
- 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
自带函数
- //去除前后空格
- 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.$ <= && RegExp.$ >=
- && RegExp.$ <= && RegExp.$ >=
- && RegExp.$ <= && RegExp.$ >=
- && RegExp.$ <= && RegExp.$ >= )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- //是否是正确的长日期
- String.prototype.isLongDate = function()
- {
- var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{,})(-|\/)(\d{,})\(\d{,}) (\d{,}):(\d{,}):(\d{,})$/);
- if(r==null)
- {
- return false;
- }
- var d = new Date(r[], r[]-,r[],r[],r[],r[]);
- return (d.getFullYear()==r[]&&(d.getMonth()+)==r[]&&d.getDate()==r[]&&d.getHours()==r[]&&d.getMinutes()==r[]&&d.getSeconds()==r[]);
- }
- //是否是正确的短日期
- String.prototype.isShortDate = function()
- {
- var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{,})(-|\/)(\d{,})\(\d{,})$/);
- if(r==null)
- {
- return false;
- }
- var d = new Date(r[], r[]-, r[]);
- return (d.getFullYear()==r[]&&(d.getMonth()+)==r[]&&d.getDate()==r[]);
- }
- //是否是正确的日期
- String.prototype.isDate = function()
- {
- return this.isLongDate()||this.isShortDate();
- }
- //是否是手机
- String.prototype.isMobile = function()
- {
- return /^{,}[-]{}$/.test(this);
- }
- //是否是邮件
- String.prototype.isEmail = function()
- {
- return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-]+((\.|-)[A-Za-z0-]+)*\.[A-Za-z0-]+$/.test(this);
- }
- //是否是邮编(中国)
- String.prototype.isZipCode = function()
- {
- return /^[\\d]{}$/.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=;
- var info="";
- var sId = this;
- var aCity={:"北京",:"天津",:"河北",:"山西",:"内蒙古",:"辽宁",:"吉林",:"黑龙 江",:"上海",:"江苏",:"浙江",:"安徽",:"福建",:"江西",:"山东",:"河南",:"湖 北",:"湖南",:"广东",:"广西",:"海南",:"重庆",:"四川",:"贵州",:"云南",:"西藏",:"陕西",:"甘肃",:"青海",:"宁夏",:"新疆",:"台湾",:"香港",:"澳门",:"国外"};
- if(!/^\d{}(\d|x)$/i.test(sId))
- {
- return false;
- }
- sId=sId.replace(/x$/i,"a");
- //非法地区
- if(aCity[parseInt(sId.substr(,))]==null)
- {
- return false;
- }
- var sBirthday=sId.substr(,)+"-"+Number(sId.substr(,))+"-"+Number(sId.substr(,));
- var d=new Date(sBirthday.replace(/-/g,"/"))
- //非法生日
- if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+) + "-" + d.getDate()))
- {
- return false;
- }
- for(var i = ;i>=;i--)
- {
- iSum += (Math.pow(,i) % ) * parseInt(sId.charAt( - i),);
- }
- if(iSum%!=)
- {
- 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{}$)|(^\d{}([-]|X)$)/.test(num))) {
- return false;
- }
- //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
- //下面分别分析出生日期和校验位
- var len, re;
- len = num.length;
- if (len == ) {
- re = new RegExp(/^(\d{})(\d{})(\d{})(\d{})(\d{})$/);
- var arrSplit = num.match(re);
- //检查生日日期是否正确
- var dtmBirth = new Date('' + arrSplit[] + '/' + arrSplit[] + '/' + arrSplit[]);
- var bGoodDay;
- bGoodDay = (dtmBirth.getYear() == Number(arrSplit[])) && ((dtmBirth.getMonth() + ) == Number(arrSplit[])) && (dtmBirth.getDate() == Number(arrSplit[]));
- if (!bGoodDay) {
- return false;
- }
- else {
- //将15位身份证转成18位
- //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
- var arrInt = new Array(, , , , , , , , , , , , , , , , );
- var arrCh = new Array('', '', 'X', '', '', '', '', '', '', '', '');
- var nTemp = , i;
- num = num.substr(, ) + '' + num.substr(, num.length - );
- for (i = ; i < ; i++) {
- nTemp += num.substr(i, ) * arrInt[i];
- }
- num += arrCh[nTemp % ];
- return true;
- }
- }
- if (len == ) {
- re = new RegExp(/^(\d{})(\d{})(\d{})(\d{})(\d{})([-]|X)$/);
- var arrSplit = num.match(re);
- //检查生日日期是否正确
- var dtmBirth = new Date(arrSplit[] + "/" + arrSplit[] + "/" + arrSplit[]);
- var bGoodDay;
- bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[])) && ((dtmBirth.getMonth() + ) == Number(arrSplit[])) && (dtmBirth.getDate() == Number(arrSplit[]));
- if (!bGoodDay) {
- return false;
- }
- else {
- //检验18位身份证的校验码是否正确。
- //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
- var valnum;
- var arrInt = new Array(, , , , , , , , , , , , , , , , );
- var arrCh = new Array('', '', 'X', '', '', '', '', '', '', '', '');
- var nTemp = , i;
- for (i = ; i < ; i++) {
- nTemp += num.substr(i, ) * arrInt[i];
- }
- valnum = arrCh[nTemp % ];
- if (valnum != num.substr(, )) {
- return false;
- }
- return true;
- }
- }
- return false;
- };
- //是否是有效的电话号码(中国)
- String.prototype.isPhoneCall = function()
- {
- return /(^[-]{,}\-[-]{,}$)|(^[-]{,}$)|(^\([-]{,}\)[-]{,}$)|(^{,}[-]{}$)/.test(this);
- }
- //是否是颜色(#FFFFFF形式)
- String.prototype.IsColor = function()
- {
- var temp = this;
- if (temp=="") return true;
- if (temp.length!=) return false;
- return (temp.search(/\#[a-fA-F0-]{}/) != -);
- }
- //对字符串进行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;
- }
- }
扩展函数
日期函数
- //创建新的 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
创建日期
- //获取时间
- ·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格式日期时间的固定时间值
自带函数
- //---------------------------------------------------
- // 判断闰年
- //---------------------------------------------------
- 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;
- }
扩展函数
- 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().
时间执行间隔
数值函数
- 常数和乘方函数
- 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
自带函数
- /*检验数字整形*/
- /*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事件
- 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 当加载文档或图片时发生错误时
javascript 事件说明
自定义方法
- //获取页面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;
- }
js常用函数总结的更多相关文章
- ecshop里提出来的js常用函数
目录 Utils.js jquery.listTable.js 使用例子: ecshop里提出来的js常用函数 Utils.js /* $Id : utils.js 5052 2007-02-03 1 ...
- 总结js常用函数和常用技巧(持续更新)
学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...
- js常用函数和常用技巧
学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...
- 总结JS 常用函数
希望本文总结的内容能给各位看官带来焕然一新的感觉.另外,如果你们有什么值得推荐的js技巧,欢迎在评论中补充,我可以收纳在本文中. PS:此文档会持续新增内容. Ajax请求 jquery ajax函数 ...
- js常用函数、书写可读性的js、js变量声明...
1.Array类型函数 array.concat(item...) 函数功能:关联数组,实现数组相加功能,但并不影响原先数组,concat返回新数组. array.join(separator) 函数 ...
- js常用函数整理
类型转换:parseInt\parseFloat\toString 类型判断:typeof;eg:if(typeof(var)!="undefined")\isNaN 字符处理函数 ...
- js常用函数汇总(不定期更新)
1.图片按比例压缩 function setImgSize(){ var outbox_w=imgbox.width(), outbox_h=imgbox.height(); imgbox.find( ...
- JavaScript学习总结(9)——JS常用函数(一)
本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助. 1. 字符串长度截取 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...
- JavaScript的使用以及JS常用函数(JS 遍历数组和集合)
JavaScript入门 学习总结 1. 什么是 JavaScript 2. JavaScript 的特点 3. JS的使用 编写位置 基本语法 变量 打印变量 数据类型 innerHTML和inne ...
- Js 常用函数
1. 算数函数(Math) 1)Js小数取整 常用于:分页算法 js 小数取整的函 .丢弃小数部分,保留整数部分 js:parseInt(/) .向上取整,有小数就整数部分加1 js: Math.ce ...
随机推荐
- HTML5 canvas 圆盘抽奖
使用html5 canvas 绘制的圆盘抽奖程序 效果图: 贴上全部代码: 1 <!DOCTYPE html> <html> <head> <meta ch ...
- Flume使用(案例分析)
Flume官方文档 Usage: bin/flume-ng <command> [options]... commands: help display this help text age ...
- Javascript Step by Step - 02
DOM 操作 DOM是面向HTML和XML文档的API,为文档提供了结构化表示.在DOM中一切都是节点Node,文档就是由许多的Node组成的.文档里的每个节点都有属性 nodeName.nodeVa ...
- P1182 数列分段Section II
P1182 数列分段Section II 题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列4 2 ...
- TCP重组问题
今天问题: vqmon 测试一pcap抓包文件18.pcap.发现实际输出的视频分片信息和抓包不符合. ===>pts : 00:00:33 Too much data in TCP recei ...
- Java 注解(Annoation)学习笔记
1 Junit中的@Test为例: 1.1 用注解(@Test)前 private boolean isTestMethod(Method m) { return m.getParameterType ...
- 关于mac ox node安装报 npm ERR! registry error parsing json
想安装grunt 遇到2个问题 让npm重新设置一下config: npm config set registry http://registry.cnpmjs.org 然后还报 npm ERR! E ...
- Python 3基础教程12-常见的错误
本文来介绍几种常见的错误,任何人在刚开始接触一个新的语言,即使照着代码抄写,也可能会犯错误,这里我们就介绍几种常见的错误,看看你是否遇到过. 1. NameError: name 'xxx' is n ...
- obj = object(),所创建的obj实例到底是个啥?
In[1]: dir(obj) Out[1]:['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '_ ...
- NTP学习
NTP(The Network Time Protocol),本以为是一个非常简单的协议,但是看了百度百科和ntp.org的介绍后,我发现我错了. 这个看似简单的协议存在一个很关键也是非常重要的问题- ...