javascript网上考试试卷实例

本文主要实现的是网上考试试卷的代码,这里主要有两部分,一部分是JSP页面是在J2EE环境下的,一部分是已生成的页面,此页面是屏蔽了例如:F4(刷新),键盘按键,鼠标右键等。 并且实现了在网络出现故障的情况下,将答案写入到cookie中供下次用户再提交使用。
一。已生产页面,可直接复制成.html格式使用:
见附件一。
二。JSP页面,服务器端的源代码,注意传来的参数等问题。

<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
if (request.getProtocol().compareTo("HTTP/1.0") == 0)
response.setHeader("Pragma", "no-cache");
if (request.getProtocol().compareTo("HTTP/1.1") == 0)
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>


<HTML>
<HEAD>
<meta http-equiv="Expires" CONTENT="-10">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">

<STYLE type=text/css>
A:link {
COLOR: #ffffff;
TEXT-DECORATION: none
}

A:visited {
COLOR: #ffffff;
TEXT-DECORATION: none
}

A:hover {
COLOR: #ffffff;
TEXT-DECORATION: underline
}

A:active {
COLOR: #ffffff;
TEXT-DECORATION: none
}

.style10 {
font-size: 9pt
}

.style12 {
font-family: "黑体";
font-weight: bold;
}

<!--
body,td,th {
font-size: 13px;
}

.style7 {
color: #660033
}

.style13 {
font-size: 16px;
font-weight: bold;
}

.style11 {
font-size: 20px;
font-weight: bold;
}

<!--
#lovexin12,#lovexin14 {
width: 100px;
height: 20px;
background-color: #e5e5e5;
border: 1px solid #ddd;
}

html,body {
height: 1000px;
}

#mm {
height: 1000px;
}
-->
</style>

<title>在线考试</title>
<%
String times = String.valueOf(request.getAttribute("time"));

Integer time = Integer.valueOf(times);
%>
<script language="JavaScript">
function hidetable()
{

document.getElementById("Layer1").style.display="none";

document.getElementById("Layer2").style.display="block";
}
</script>
<script language="javascript" src="/zjzcontest/scripts/cookie.js">
</script>

<script language="JavaScript" type="text/javascript">

var time_all=<%=time%>; //设定总的时间,单位为分钟;
time_all=time_all*60;

function time_() {
var mm,ss;
mm=parseInt(time_all/60);
ss=time_all % 60;

if(time_all>=0) {
if(mm<10) {
mm='0'+mm;
}

if(ss<10) {
ss='0'+ss;
}

str=mm+'分'+ss+'秒';
form2.test1.value=str;
}if(time_all==0){
document.exam.submit();
window.opener=null;
window.close();
}

time_all=time_all-1;
setTimeout('time_()',1000);
}


lastScrollY=0;
function heartBeat(){
var diffY;
if (document.documentElement && document.documentElement.scrollTop)
diffY = document.documentElement.scrollTop;
else if (document.body)
diffY = document.body.scrollTop
else
{/*Netscape stuff*/}

//alert(diffY);
percent=.1*(diffY-lastScrollY);
if(percent>0)percent=Math.ceil(percent);
else percent=Math.floor(percent);
document.getElementById("lovexin12").style.top=parseInt(document.getElementById
("lovexin12").style.top)+percent+"px";
document.getElementById("lovexin14").style.top=parseInt(document.getElementById
("lovexin12").style.top)+percent+"px";
lastScrollY=lastScrollY+percent;
//alert(lastScrollY);
}
suspendcode12="<DIV id=\"lovexin12\" style='left:2px;POSITION:absolute;TOP:100px;display:none'>ad1</div>"
suspendcode14="<DIV id=\"lovexin14\" style='right:2px;POSITION:absolute;TOP:2px; display:none;'><form name=form2><font color='red' size='3'>考试倒计时:</font><input type=text name=test1 readonly size=7 style='border:none;color:red;font-weight: bold;'></form></div>"
document.write(suspendcode12);
document.write(suspendcode14);
window.setInterval("heartBeat()",1);

if (window.ActiveXObject && !window.XMLHttpRequest) {
window.XMLHttpRequest=function() {
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}//取得XMLHttpRequest对象
window.onload=function(){
var req=new XMLHttpRequest();
hidetable();
document.getElementById("lovexin14").style.display="block";
time_();
if (req) {
req.open('POST', 'examAction!writeBeTime.action');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("");
}
setTimeout("document.exam.submit();",6000000);

}

</script>
<script>
function window.onbeforeunload() {
if (event.clientX>document.body.clientWidth && event.clientY<0 ||event.altKey) {
document.exam.submit();
alert("由于您非法关闭窗口,系统已经强制为您提交答案!");}
};
</script>
<script language="Javascript"><!--
//屏蔽鼠标右键、Ctrl+N、Ctrl+R、Shift+F10、F11、F1、F5、退格键
//Author: meizz(梅花雨) 2002-6-18
function document.oncontextmenu() { //屏蔽鼠标右键
event.returnValue=false;
}
function window.onhelp() { //屏蔽F1帮助
return false;
}
function document.onkeydown() {
var k = window.event.keyCode;

if (k == 8 || k==116) { //屏蔽退格删除键
//屏蔽 F5 刷新键
window.event.keyCode = 0;
window.event.returnValue = false;
}
if (k == 122) { //屏蔽F11
window.event.keyCode = 0;
window.event.returnValue = false;
}
if (window.event.ctrlKey && k == 80) {//Ctrl + P(打印)
event.keyCode=0;
window.event.returnValue = false;
}
if (window.event.ctrlKey && k == 79) {//Ctrl + O
event.keyCode=0;
window.event.returnValue = false;
}
if (window.event.ctrlKey && k == 82) //Ctrl + R
window.event.returnValue = false;
if (window.event.ctrlKey && k == 78) //屏蔽 Ctrl + n
window.event.returnValue = false;
if (window.event.ctrlKey && k == 87) //屏蔽 Ctrl + w
window.event.returnValue = false;
if (event.shiftKey && k == 121) //屏蔽 shift + F10
window.event.returnValue = false;
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
window.event.returnValue = false; //屏蔽 shift 加鼠标左键新开一网页
if (window.event.altKey && k == 115) { //屏蔽Alt+F4
window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
return false;
}
if (window.event.altKey && (k == 37 || k == 39)) { //屏蔽 Alt + 方向键← 和 Alt + 方向键→

event.returnValue=false;
}
}
// --></script>
</HEAD>
<BODY onselectstart="return false" oncut="return false;"
onpaste="return false" oncopy="return false;" style="FONT-SIZE: 10pt"
vLink=#ffffff aLink=#ffffff link=#ffffff background="pic/login_bg.gif"
leftMargin=0 topMargin=0 marginheight="0" marginwidth="0";
>
<TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" border=0
bgcolor="#FFFFFF">
<TBODY>
<TR>
<TD width="100%" height="100%" vAlign=top>
<TABLE height=300 cellSpacing=0 cellPadding=0 width=770
bgcolor="#f0f0f0" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top noWrap width=700 height=300>
<form action="" method="post"
name="exam" target="_blank">
<div id="Layer2" style="display: none;">
<table width="90%" height="100%" border="0" align="center">
<tr>
<td>
 

</td>
</tr>
<tr>
<td align="center" colspan="6">
<strong><span class="style11"><s:property
value="couName" />在线考试 </span> </strong>
<br>
</td>
</tr>
<tr>
<td>
 

</td>
</tr>
<tr valign="top">
<td>
<strong>一、</strong>
</td>
<td colspan="4">
<strong>单项选择题</strong>
<br>

 
</td>
</tr>
<s:iterator value="examList">
<s:if test="subjectType==1">
<tr valign="top">
<td align="center" valign="top">

<s:property value="subjectNum" />
.
</td>
<td colspan="4">
<span class="style7"><s:property
value="subjectContent" /> </span>
</td>
</tr>
<tr align="left" valign="middle">
<td align="right" valign="top" width="4%">
 

</td>
<td width="4%">
<input type="radio"
name='1<s:property value="subjectNum"/>' value="A">
</td>
<td width="45%">
A.
<s:property value="optionA" />
</td>
<td align="right" valign="top" width="4%">

<input type="radio"
name='1<s:property value="subjectNum"/>' value="B">
</td>
<td width="43%">


B.
<s:property value="optionB" />
</td>
</tr>
<tr align="left" valign="middle">
<td align="right" valign="top" width="4%">
 


</td>
<td>
<input type="radio"
name='1<s:property value="subjectNum"/>' value="C">
</td>
<td>
C.
<s:property value="optionC" />
</td>
<td align="right" valign="top" width="4%">

<input type="radio"
name='1<s:property value="subjectNum"/>' value="D">

</td>
<td>

D.
<s:property value="optionD" />
</td>
</tr>
<tr>
<td>
 

</td>
</tr>
</s:if>
</s:iterator>
<tr valign="top">
<td>
<strong> 二、</strong>
</td>
<td colspan="4">
<strong> 判断题</strong>
<br>
<br>
</td>
</tr>
<s:iterator value="examList">
<s:if test="subjectType==3">
<tr valign="top">
<td align="center" valign="top">
<s:property value="subjectNum" />
.
</td>
<td colspan="4">
<span class="style7"><s:property
value="subjectContent" /> </span>
</td>
</tr>
<tr align="left" valign="center">
<td align="right" valign="top" width="4%">
 

</td>
<td>
<input type="radio"
name='3<s:property value="subjectNum"/>' value="A">
</td>
<td>
A.
<s:property value="optionA" />
</td>
<td align="right" valign="top" width="4%">

<input type="radio"
name='3<s:property value="subjectNum"/>' value="B">
</td>
<td>
B.
<s:property value="optionB" />
</td>
</tr>
<tr>
<td>
 

</td>
</tr>
</s:if>
</s:iterator>
<tr valign="top">
<td>
<strong> 三、</strong>
</td>
<td colspan="4">
<strong>多项选择题</strong>
<br>
<br>
</td>
</tr>
<s:iterator value="examList">
<s:if test="subjectType==2">
<tr valign="top">
<td align="center" valign="top">

<s:property value="subjectNum" />
.
</td>
<td colspan="4">
<span class="style7"><s:property
value="subjectContent" /> </span>
</td>
</tr>
<tr align="left" valign="middle">
<td align="right" valign="top" width="4%">
 

</td>
<td width="4%">
<input type="checkbox"
name='2<s:property value="subjectNum"/>' value="A">
</td>
<td width="45%">
A.
<s:property value="optionA" />
</td>
<td align="right" valign="top" width="4%">

<input type="checkbox"
name='2<s:property value="subjectNum"/>' value="B">
</td>
<td width="43%">
B.
<s:property value="optionB" />
</td>
</tr>
<tr align="left" valign="middle">
<td align="right" valign="top" width="4%">
 

</td>
<td>
<input type="checkbox"
name='2<s:property value="subjectNum"/>' value="C">
</td>
<td>
C.
<s:property value="optionC" />
</td>
<td align="right" valign="top" width="4%">

<input type="checkbox"
name='2<s:property value="subjectNum"/>' value="D">
</td>
<td>
D.
<s:property value="optionD" />
</td>
</tr>
<tr>
<td>
 

</td>
</tr>
</s:if>
</s:iterator>
<tr align="center">
<td align="center" colspan="5">
<input type="hidden" name="name"
value="<s:property value="name" />">
<input type="hidden" name="couId"
value="<s:property value="couId" />">
<input type="hidden" name="classId"
value="<s:property value="classId" />">
<input type="hidden" name="couName"
value="<s:property value="couName" />">
<input type="hidden" name="idNum"
value="<s:property value="idNum" />">
<input type="hidden" name="examCount"
value="<s:property value="examCount" />">
<input type="hidden" name="remainCount"
value="<s:property value="remainCount" />">
<input type="hidden" name="allExamCount"
value="<s:property value="allExamCount" />">
<input type="hidden" name="grade"
value="<s:property value="grade" />">
<input type="hidden" name="first"
value="<s:property value="first" />">
<input type="hidden" name="refresh"
value="<s:property value="refresh" />">
<input type="hidden" name="paperNo"
value="<s:property value="paperNo" />">
<input type="hidden" name="log_id" id="log_id"
value="<s:property value="log_id" />">
<input type="submit" value=" 提  交 "
name="check" style="font-weight: bold; font-size: 16px"
onclick="return OpenNew();">
<br>
 
</td>
</tr>
<tr>
<td></td>
</tr>
</table>
</div>
</form>
<div id="Layer1">
<TABLE height="600" cellSpacing=0 cellPadding=0 width="100%"
border=0 bgcolor="#FFFFFF">
<TBODY>
<TR>
<TD width="100%" height="400" vAlign=middle>
<TABLE height=400 cellSpacing=0 cellPadding=0 width=770
bgcolor="#FFFFFF" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top noWrap width=770>
<TABLE height=300 cellSpacing=0 cellPadding=0
width="100%" bordercolor="#FFCC00" border=1>
<TBODY>

<TR valign="top">
<TD width="739" colspan="3" align="center"
height=300 valign="center">
<strong><font size="3">正在传送试卷,请稍后......</font>
</strong>
</td>

</tr>
</table>

</TD>
</TR>
<tr>

</tr>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</div>
</TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</BODY>
<script language="javascript">
function OpenNew(){
var logid=document.getElementById("log_id").value;

var name=document.getElementById("name").value;
var couId=document.getElementById("couId").value;
var classId=document.getElementById("classId").value;
var couName=document.getElementById("couName").value;
var idNum=document.getElementById("idNum").value;
var examCount=document.getElementById("examCount").value;
var remainCount=document.getElementById("remainCount").value;
var allExamCount=document.getElementById("allExamCount").value;
var grade=document.getElementById("grade").value;
var first=document.getElementById("first").value;
var refresh=document.getElementById("refresh").value;
var paperNo=document.getElementById("paperNo").value;

var obj=document.getElementsByTagName("input");
var length=obj.length;


var pkey="";//判断答案

var skey="";//单选答案

var dkey="";//多选答案


var i=1;

var sflag=0;//是否本题(单选)没有选择答案,0--没选择,1--选择

var pflag=0;//是否本题(判断)没有选择答案,0--没选择,1--选择

var dflag=0;//是否本题(多选)没有选择答案,0--没选择,1--选择

var dfirst=0;//是否本答案选项为本题的(多选)的第一个选项,0--是,1--不是

var sfirst=0;//是否本答案选项为本题的(单选)的第一个选项,0--是,1--不是

var pfirst=0;//是否本答案选项为本题的(判断)的第一个选项,0--是,1--不是

while(i<length){
// 取得所有判断题的答案,以.号分隔
if(obj[i-1].name.charAt(0)=='3'){
//取得某一题目的名称
var name=obj[i-1].name;
//是否是同一道题目
if(obj[i].name==name){
//name是不是第一次出现
if(pfirst==0){
//当前项是否被选中
if(obj[i-1].checked){
pkey=pkey+obj[i-1].value;
pflag=1;
}
//后一项是否被选中
if(obj[i].checked){
pkey=pkey+obj[i].value;
pflag=1;
}
pfirst=1;
}
else{
if(obj[i].checked){
pkey=pkey+obj[i].value;
pflag=1;
}
}
}else {
if(pflag==0)
{
//本题没有选择答案,置本题答案为0
pkey=pkey+"0:"+name+".";
}else{
//有选择则字符串加.分隔
pkey=pkey+":"+name+".";
}
//在pflag为0的情况下,继续遍历,直到有选择项,否则就设为"0."
pflag=0;
if(obj[i].name.charAt(0)=='3'){
if(obj[i].checked){
pkey=pkey+obj[i].value;
pflag=1;
}
}
}
}

//处理多选题
if(obj[i-1].name.charAt(0)=='2'){
var name=obj[i-1].name;
if(obj[i].name==name){
if(dfirst==0){

if(obj[i-1].checked){
dkey=dkey+obj[i-1].value;
dflag=1;
}
if(obj[i].checked){
dkey=dkey+obj[i].value;
dflag=1;
}
dfirst=1;
}
else{
if(obj[i].checked){
dkey=dkey+obj[i].value;
dflag=1;
}
}
}else {
if(dflag==0){
dkey=dkey+"0:"+name+".";
}else{
dkey=dkey+":"+name+".";
}
dflag=0;
if(obj[i].name.charAt(0)=='2'){
if(obj[i].checked){
dkey=dkey+obj[i].value;
dflag=1;
}
}
}
}

//处理单选题
if(obj[i-1].name.charAt(0)=='1'){
var name=obj[i-1].name;
if(obj[i].name==name){
if(sfirst==0){
if(obj[i-1].checked){
skey=skey+obj[i-1].value;
sflag=1;
}
if(obj[i].checked){
skey=skey+obj[i].value;
sflag=1;
}
sfirst=1;
}
else{
if(obj[i].checked){
skey=skey+obj[i].value;
sflag=1;
}
}
}else {
if(sflag==0){
skey=skey+"0:"+name+".";
}else{
skey=skey+":"+name+".";
}
sflag=0;
if(obj[i].name.charAt(0)=='1'){
if(obj[i].checked){
skey=skey+obj[i].value;
sflag=1;
}
}
}
}
i++;
}
var allkey=skey+dkey+pkey;
SetCookie("logid",logid);
SetCookie(logid+"allkey",allkey);

window.opener=null;
window.close();
}

function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/";
}
</script>
</HTML>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值