这是我整个在线考试系统中一部分,实现的功能是当考试时间到点时,自动将试卷提交!为了实现这个功能,在网上查阅了不少资料,研究了蛮久,终于实现了这个功能!废话不多说了,进入正题。
第一步:根据考试的期号,从SqlServer数据库中获取考试时间的时长。
Code
protected string GetTestTime()
{
string sql = "Select TestTime From Tab_QiHao where id = " + txtQiHao.Text;
sqlconnection con = new sqlconnection(connectionString);
con.open();
sqlcommand cmd = new sqlcommand(sql,con);
string TestTime = Convert.toString(cmd.executeScalar());
return TestTime;
}
第二步:对获取的时间数据进行处理,分别得到其小时数(Hour),和分钟数(Minute),并存储到Session对象中,这个地方是关键,通过Session对象实现与客户端进行数据传递。
Code
protected void ConvertTestTime()
{
Strng TestTime = this.GetTestTime();
int Time = Convert.ToInt32(TestTime);
int Hour = Time / 60;
int Minute = Time % 60;
Session["Hour"] = Convert.ToString(Hour);
Session["Minute"] = Convert.ToString(Minute);
}
第三步:获取Session对象里的数据,并使用JavaScript进行计时的显示。
Code
<script language="javascript">
var h= <%=Session["Hour"] %>;
var m= <%=Session["Minute"] %>;
var s= 5;
function StartTime()
{
if (s > 0)
{
s = s - 1;
}
if (s == 0 && m > 0)
{
m = m - 1;
s = 60;
}
if (s==0 && m == 0 && h > 0)
{
h = h - 1;
m = 60;
}
document.getElementById('txtTime').value = h+":"+m+":"+s;
t = setTimeout('StartTime()',1000);
if (h == 0 && m == 0 && s == 0)
{
window.clearTimeout(t);
document.getElementById('btnSubmit').click();//考试到点,触发button.Click事件
alert('考试时间已到,试卷已提交,感谢使用本系统!');
}
}
</script>
最后将body onload属性设置为setTimeout,即可实现这个计时功能,蛮精巧的小玩意!