`
love552200
  • 浏览: 7948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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>
															&nbsp;

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

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

															&nbsp;
														</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%">
																	&nbsp;

																</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%">
																	&nbsp;


																</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>
																	&nbsp;

																</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%">
																	&nbsp;

																</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>
																	&nbsp;

																</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%">
																	&nbsp;

																</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%">
																	&nbsp;

																</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>
																	&nbsp;

																</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="&nbsp;提&nbsp;&nbsp;交&nbsp;"
																name="check" style="font-weight: bold; font-size: 16px"
																onclick="return OpenNew();">
															<br>
															&nbsp;
														</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>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics