cz's profile虫虫的窝PhotosBlogListsMore ![]() | Help |
|
4/29/2007 js中setInterval 和setTimeout 的区别 控制在线考试的时间setInterval是隔一定的时间循环执行,setTimeout仅再执行一次。
比如:
1、setInterval:
function f1();
function f2()
{
setInterval("f1()",1000);
}
然后调用f2();
2、setTimeout:
function f1()
{
setTimeout("f1()",1000);
}
然后调用f1()。
以上的调用都可以达到让f1()每秒执行一次的效果。
//-------------------------
如果:
function f1()
{
setInterval("f1()",1000);
}
调用f1()将会在瞬间耗尽资源(不超过10秒,相对于我的破电脑而言),可能一般写过程序的人都不大相信有人会写出这种程序,就是有人会这么干。我昨天就被这种代码折磨了一个下午,还一度怀疑IE的脚本调试出问题了,最后查资料才搞明白,呵呵。
出错的脚本:
//---------------------------------------------------------- //取得还剩下的考试时间,用于页面:examonline.aspx //filename:antiCommon.js
function getEndTime() { ExamOnline.WSEndTime.getEndTime(SucceededCallBack); window.setInterval("getEndTime()",30000); //这里应该用setTimeout } //-------------------
//回调函数
function SucceededCallBack(result) { var resultTime = result.split(':'); var resultHours = resultTime[0]; var resultMinutes = resultTime[1]; if(resultHours == '00' && resultMinutes <= 15) { document.title ="【提醒】离考试结束还有:" + resultMinutes + "分钟!请在考试结束前提交试卷,系统的自动提交功能并不能完全保证提交成功!"; } else { document.title ="【在线考试】离考试结束还有:" + result + "[小时:分钟]【注意:时间提示有0-60秒的误差】"; } if(resultHours == '00' && resultMinutes <= 0) { __doPostBack('btnSubmit',''); } } //----------------------------------------------------------- //服务器端代码 使用asp.net ajax 框架
//filename:WSEndTime.asmx
using System;
using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Script.Services; namespace ExamOnline
{ [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class WSEndTime : System.Web.Services.WebService { [WebMethod] public string getEndTime() { DateTime dt; if(HttpContext.Current.Application["EndTime"] != null) { dt =Convert.ToDateTime(HttpContext.Current.Application["EndTime"]); } else { dt = (new ExamOnline.Exam()).getEndTime(); HttpContext.Current.Application["EndTime"] = dt; } TimeSpan ts = dt - DateTime.Now; string hours = ""; string minutes = ""; if(ts.Hours < 10) { hours = "0" + ts.Hours.ToString(); } else { hours = ts.Hours.ToString(); } if (ts.Minutes < 10) { minutes = "0" + ts.Minutes.ToString(); } else { minutes = ts.Minutes.ToString(); } return hours + ":" + minutes; } } } 毕业设计告一段落,呵呵。 4/25/2007 五一 五一放假5天,代价是这周连续工作8天外加下周日补班,从这周一一直到下周一。公司本来就是单修,其实算起来也就3天,只不过把两周的单修给加进来了。
以前读书的时候老想早点毕业,现在却想赖在学校不走,最近工作量太大了,很累。同事都说适应本来就需要很长的时间,不用太急,老大可不管这些。离职老员工就留下了一份原代码,连代码注释都少的可怜,更不要说说明文档了,更残忍的是服务端代码混着大量的客户端脚本,不知看多了会不会折寿。
说实话,不是很确定到底要不要继续做下去,而且也要考虑家里的意见,过了五一再说吧。 4/15/2007 对Email的依赖 上学的时候,hotmail邮箱对我唯一的用处就是上MSN,现在才真正成了名副其实的Email,虽然不喜欢一切交流都通过邮件的形式,不过环境就是这样,位置不超过5步距离的同事发个话都用Email,其实转过头说一下就可以了,我都这么做,他们反而不习惯了。感觉什么交流都用Email反而会降低效率。
代码虽然写的不怎么样,文档倒是一流,不过公司一点都不重视文档的编写,希望以后有所改观。 最近一团糟,想事事都做好,反而事事都不顺。还有发现自己貌似有强迫症。
搞不懂一些人,满嘴信奉耶稣,面对权利和物质却可以不择手段,宗教是很神圣的,容不得玩笑。 4/9/2007 删了Google输入法了 新鲜感没持续多久,又换回了紫光3.0,主要是因为gpy反应太慢了,往往是键盘都敲完好一会儿了词条还没出来(跟我破电脑也有关系)。紫光很小巧,而且不喜欢gpy那么大的面板,我没有Gmail的帐号,所以网络同步的功能对我来说就像是摆设。
既然用不到网络同步,我干嘛还要忍受gpy蜗牛的速度。
感觉紫光还是3.0经典,我也不喜欢紫光华宇5.0。 |
|
|