js常用算法
1.格式化数字 该函数格式化数字样式为带有千分号和制定小数点数位的格式。function fomatNumber(s, n) { n = n >= 0 && n <= 20 ? n : 2; s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; var l = s.split(".").split("").reverse(), r = s.split("."); t = ""; for(i = 0; i < l.length; i ++ ) { t += l + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); } if( n==0 ) return t.split("").reverse().join("") else return t.split("").reverse().join("") + "." + r;}
2.2010-10-13 当应用ajax时,iframe 在ie里面不能刷新 ,或者称之为有缓存我算是领教过了。本来应该轻松的今天浪费了我太多的时间。
如果A网页里有iframe,而这个iframe的src只想B页。当A刷新时,B中有ajax请求的话,则B不会刷新。只是在IE中才如此。解决办法唯有让iframe的src引用页的ajax请求的url每次都不一样 。在手头上的项目,不想让每个人都去改自己的页面去。所以我的办法只能是去更改jquery的源代码,让它的ajax请求每次都自动在后面加一个随机参数了。
3.2010-10-15 本来以为没有办法。但今天一查,却给了自己一个惊喜。原来在主页面也能判断何时该页面中的iframe加载完毕 ,从而可以为应用提供类似假滚动条的东西来增强用户体验。对于现在我设计的以iframe为单位的页面架构提供了以后让人无可挑剔的体验。方法可参考如下代码
<html> <head> </head> <body><div id="msg"></div><iframe id="detail" name="detail"></iframe> </body><script>/**/var div = document.getElementById("msg");div.innerHTML = "数据加载中...";var iframe = document.getElementById("detail");iframe.width="100%";iframe.height="100%";iframe.src = "http://163.com";if (iframe.attachEvent){ iframe.attachEvent("onload", function(){ div.style.display = "none"; });} else { iframe.onload = function(){ div.style.display = "none"; };}</script></html>
4.获得某个月天数的算法 。原本是给组内人员写个取得上月同期和上周同期的公用方法。取得上月同期,不得不先写这个算法了。
/** * get days number in month * @param year * @param month * @return */function baseGetDatesInMonth(year, month) {if(parseInt(month) == 1 || parseInt(month) == 3 || parseInt(month) == 5 || parseInt(month) == 7 || parseInt(month) == 8 || parseInt(month) == 10 || parseInt(month) == 12) { return 31;} else if(month == 2 && (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))) { return 29;} else if(month == 2) { return 28;} else { return 30;}}/** * get the same date in last month * if last month does not contain the day the last day will return * @param thedate * @param n if n == 6, MM-dd will return * @return*/function baseGetLastMonthTheSameDay(thedate, n) {var year = thedate.substring(0,4);var month = thedate.substring(5,7);var date = thedate.substring(8); var monthDays = baseGetDatesInMonth(year, month);var lastMonthYear = year;var lastMonth = month - 1;if(lastMonth == 0) { lastMonthYear = year - 1;lastMonth = 12;}var lastMonthDays = baseGetDatesInMonth(lastMonthYear, lastMonth);var lastMonthDate = date;if(lastMonthDays < date) { lastMonthDate = lastMonthDays;}if(lastMonth < 10) { lastMonth = "0" + lastMonth;}/*if(lastMonthDate < 10) { lastMonthDate = "0" + lastMonthDate;}*/ if(n == 5) { return lastMonth + "-" + lastMonthDate;} returnlastMonthYear + "-" + lastMonth + "-" + lastMonthDate;}/** * get the same date in last week * @param thedate * @param n if n == 6 MM-dd will return * @return */function baseGetLastWeekTheSameDay(thedate, n) { var year = thedate.substring(0,4);var month = thedate.substring(5,7);var date = thedate.substring(8);var theDate = new Date(); theDate.setYear(year);theDate.setMonth(month -1);theDate.setDate(date);var time = theDate.getTime();time = time - 7 * 24 * 60 * 60 * 1000theDate.setTime(time);var lastWeekYear = theDate.getYear();var lastWeekMonth = theDate.getMonth() + 1;var lastWeekDate = theDate.getDate(); if(lastWeekYear < 1900) { lastWeekYear = lastWeekYear + 1900; }if(lastWeekMonth < 10) { lastWeekMonth = "0" + lastWeekMonth;}if(lastWeekDate < 10) { lastWeekDate = "0" + lastWeekDate;} if(n == 5) { return lastWeekMonth + "-" + lastWeekDate;} return lastWeekYear + "-" + lastWeekMonth + "-" + lastWeekDate;}
5.js格式化函数,是完全在客户端获取Date对象后的格式化
Date.prototype.format = function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3),//quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)) format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(format)) format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o : ("00"+ o).substr((""+ o).length)); return format;}var ddd = new Date();document.write (ddd.format('yyyy-MM-dd hh:mm:ss<br>'));document.write (ddd.format('yyyy-MM-dd'));
6.
页:
[1]