javascript中replace() 方法如果直接用str.replace("apples","oranges") 只会替换第一个匹配的字符。
使用 /g 替换所有匹配的字符, /i 忽略大小写
<SCRIPT>
var str = "Apples are round, and apples are juicy.";
var newstr=str.replace(/apples/gi, "oranges");
document.write(newstr)
</SCRIPT> This prints "oranges are round, and oranges are juicy."
-------------------------------------------------------------------
parseInt与parseFloat
最近我正在升级一个日历控件,出现了一些莫名其妙的错误,最后发现原来是一个parseInt函数的一个所谓的bug引起的,就是在 parseInt("08") 和 parseInt("09") 处理时返回的居然都是 0 ,而 parseFloat函数就没有这样的错误,没办法,我将所有用到parseInt函数的地方都改成了parseFloat函数。
最后经过测试才发现,原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07自然没有问题,但是09,08都是不合格的八进制形式,所以被按照0处理了。为了解决这个问题,可以利用parseInt函数的另一个参数,显示的告诉parseInt按照十进制处理。例如 我们可以这样 parseInt("08",10) 或者 parseInt("09",10)。这样就不会有问题了。所以说这个所谓的bug不应该称其为一个bug,只不过我们对其不甚了解,忽略了一个重要的参数,才出现了这个让我们头疼的情况。。。。。
-------------------------------------------------------------------------------------------------------
Javascript 对时间的代号
0-11数字表示1-12月: var a= new Date(2006,5,6) 结果是2006-6-6
0-6表示星期 0代表星期天
1-31表示日期
0-23小时
0-59分钟,秒
------------------------------------------------------------------------------------
//显示日期以及日期的加减运算
function DisplayTime(str)
{
/*
var myDate=new Date();
if(document.getElementById("txtAdd").value!="")
{
var a=parseInt(document.getElementById("txtAdd").value);
//在当前时间基础上加天数
var newDate=new Date(myDate.getFullYear(),myDate.getMonth(),myDate.getDate()+a);
var s=newDate.getFullYear()+"-"+(newDate.getMonth()+1)+"-"+newDate.getDate();
document.getElementById("txtDate").value=s;
}
*/
//将string(yyyy-mm-dd)转换为date
var a=document.getElementById("txtAdd").value;
//a=a.split("-");
//var myDate=new Date(parseInt(a[0]),parseInt(a[1])-1,parseInt(a[2]));
var myDate=new Date(str.replace(/-/g,"/"));
//在当前时间基础上加减天数获得新的日期
var newDate=new Date(myDate.getFullYear(),myDate.getMonth(),myDate.getDate()+5);
var s=newDate.getFullYear()+"-"+(newDate.getMonth()+1)+"-"+newDate.getDate();
document.getElementById("txtDate").value=s;
}
<asp:TextBox ID="txtAdd" runat="server" οnblur="DisplayTime(this.value)"></asp:TextBox>
<asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
------------------------------------------------------------
两个日期相减后得到天数
var sDate="2006-06-06";
var eDate="2007-07-07";
//method 1
//var sArr = sDate.split("-");
//var eArr = eDate.split("-");
//var sRDate = new Date(sArr[0], sArr[1], sArr[2]);
//var eRDate = new Date(eArr[0], eArr[1], eArr[2]);
//或者用下面的 method 2
var sRDate =new Date(sDate.replace(/-/g,"/"));
var eRDate =new Date(eDate.replace(/-/g,"/"));
var result = (eRDate-sRDate)/(24*60*60*1000);
这样得到的result即为两个日期之间相差的天数。