1.格式化数字 该函数格式化数字样式为带有千分号和制定小数点数位的格式。
function fomatNumber(s, n) {
n = n >= 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ ) {
t += l[i] + ((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;
}
return lastMonthYear + "-" + 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 * 1000
theDate.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[k] : ("00"+ o[k]).substr((""+ o[k]).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.