| Subcribe via RSS

几个不常用但很有用的javascript方法

11月 12th, 2007 Posted in 心得
1. javascript代码延迟执行。

我们经常可以看到这样的应用,鼠标放到tab上时切换tab内容为当前tab.但是这样就会有个问题,怎么样防止鼠标不经意划过tab时触发这个事件呢?可以通过延迟触发来避免这种情况,但是javascript中没有这样的函数。

javascript提供了一个函数 setTimeout(),可以延迟一个操作的执行,但是这个操作最终还是要执行的。我们需要的是鼠标放在tab上超过0.5s才执行某个操作,否则什么都不发生。

幸好,javascript还提供了另外一个函数,叫做clearTimeout(),于是这个问题就解决了。

 var tabId;
 var timeoutId;
 //鼠标放上时
 function tabOnMouseOver(tabid)
 {
 tabId=tabid;
 //延时500毫秒
 timeoutId=setTimeout(changeTab,500);
 }
 //鼠标移开时清除定时器
 function tabOnMouseOut()
 {
 clearTimeout(timeoutId);
 tabId=0;
 }
2. 设置下拉列表的默认值。

通常的做法是用jsp标签在页面上判断当前默认应该选中哪个value.这样不但繁琐,程序的可读性也很差。这个工作完全交给javascript去做。

// 设置下拉列表的默认值,用于设置表单初始值,表单加载结束时调用
 function setSelectDefaultValue(eleId,value)
 {
 var options=document.getElementById(eleId).options;
 for(i=0;i<options.length;i++)
 {
 if(options[i].value==value)
 {
 options[i].selected =true;
 }
 }
 }

这样,每次页面加载完之后调用这个方法set下拉列表的默认值就可以了。

3. 计算两个日期间隔。

这里要求日期的格式必须为”yyyy-MM-dd”格式。

//检查日期间隔不能大于interval天
 function checkInterval(date1,date2,interval)
 {
 //将天数转为毫秒数
 iseconds = 1000 * 3600 * 24 * interval;
 date1=Date.parse(new Date(date1.replace(/-/g,"/")));
 date2=Date.parse(new Date(date2.replace(/-/g,"/")));
 if(date2-date1)>iseconds)
 {
 alert("查询时间间隔不能超过" + interval + "天") ;
 return false;
 }
 if(date2-date1)<0)
 {
 alert("请设置正确的查询间隔,开始时间不能晚于结束时间");
 return false;
 }
 return true
 }
相关文章:

Leave a Reply