第9章 XML存储结构以及整合ASP的应用

下面是一个自编心理测试程序的例子,用XML+JAVASCRIPT实现.

心得:
1.如果要使用node.nextSibling,最好这个节点后面没有注释.
2.还是大小写问题,一定不能弄错.此例中的Element有一个我写成了ELement,花了2个小时才找到这个错误.

testfile.xml:(测试题目的XML数据文件)
None.gif <? xml version="1.0" encoding="gb2312" ?>
None.gif
<!--  测试题目qusNu属性代表题目总数  -->
None.gif
<!--  gd代表了该选项的分值  -->
None.gif
< mentality  qusNu ="12" >
None.gif    
< question  id ="1" >
None.gif        
< text > 你喜欢哪一类的人? </ text >
None.gif        
< answer1  gd ="1" > 比自己强的; </ answer1 >
None.gif        
< answer2  gd ="3" > 喜欢和尊重自己的; </ answer2 >
None.gif        
< answer3  gd ="5" > 需要自己的; </ answer3 >
None.gif        
< answer4  gd ="0" > 不知道; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="2" >
None.gif        
< text > 当你的朋友不赞成也不理解你的建议时,你会: </ text >
None.gif        
< answer1  gd ="1" > 避开这个问题; </ answer1 >
None.gif        
< answer2  gd ="3" > 继续解释; </ answer2 >
None.gif        
< answer3  gd ="5" > 听听他的意见; </ answer3 >
None.gif        
< answer4  gd ="0" > 觉得受伤或生气,不再说话; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="3" >
None.gif        
< text > 和朋友聚会,当你觉得情绪低落时,你会: </ text >
None.gif        
< answer1  gd ="1" > 不掩饰情绪,但坚持到最后; </ answer1 >
None.gif        
< answer2  gd ="3" > 强作欢颜,不让人注意到不快情绪; </ answer2 >
None.gif        
< answer3  gd ="5" > 找借口离开; </ answer3 >
None.gif        
< answer4  gd ="0" > 如实告诉朋友离开; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="4" >
None.gif        
< text > 工作上遇到麻烦,下班后你会: </ text >
None.gif        
< answer1  gd ="1" > 闷在心里,愤愤不已; </ answer1 >
None.gif        
< answer2  gd ="3" > 找朋友倾吐不快; </ answer2 >
None.gif        
< answer3  gd ="5" > 一个人出去散心,忘掉烦恼; </ answer3 >
None.gif        
< answer4  gd ="0" > 希望回家从亲人处得到安慰; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="5" >
None.gif        
< text > 某人你刚认识的人,吃力地向教导你某件你很清楚的事,你会: </ text >
None.gif        
< answer1  gd ="1" > 不说什么,但也不听; </ answer1 >
None.gif        
< answer2  gd ="3" > 等他讲完,再显示你对此道十分精通; </ answer2 >
None.gif        
< answer3  gd ="5" > 很认真地听完他的讲述,并不时称赞; </ answer3 >
None.gif        
< answer4  gd ="0" > 告诉他你早就知道; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="6" >
None.gif        
< text > 你认为自己: </ text >
None.gif        
< answer1  gd ="1" > 每遇上好机会,不然会有更好的生活; </ answer1 >
None.gif        
< answer2  gd ="3" > 总是在花大量时间做着自己不想做的事; </ answer2 >
None.gif        
< answer3  gd ="5" > 目前的生活与自己的付出的相符; </ answer3 >
None.gif        
< answer4  gd ="0" > 说不定明天就会撞上好运; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="7" >
None.gif        
< text > 马上要过节了,你会: </ text >
None.gif        
< answer1  gd ="1" > 花许多时间想像要做的事; </ answer1 >
None.gif        
< answer2  gd ="3" > 过节没意思; </ answer2 >
None.gif        
< answer3  gd ="5" > 没什么特别的异样感觉; </ answer3 >
None.gif        
< answer4  gd ="0" > 激动不已地等待盼望; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="8" >
None.gif        
< text > 出门前你的家人若穿着不适,你: </ text >
None.gif        
< answer1  gd ="1" > 坚持要他(她)换装; </ answer1 >
None.gif        
< answer2  gd ="3" > 建议他(她)换一下装束; </ answer2 >
None.gif        
< answer3  gd ="5" > 无所谓; </ answer3 >
None.gif        
< answer4  gd ="0" > 除非他(她)换装,不然不会与其一同出门; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="9" >
None.gif        
< text > 在重要的事情即将发生时,你会: </ text >
None.gif        
< answer1  gd ="1" > 想寻求支持和鼓励; </ answer1 >
None.gif        
< answer2  gd ="3" > 不愿与人谈及此事; </ answer2 >
None.gif        
< answer3  gd ="5" > 轻松的与朋友谈论此事; </ answer3 >
None.gif        
< answer4  gd ="0" > 干其余事时非常焦躁; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="10" >
None.gif        
< text > 当有人惹恼你时,你会: </ text >
None.gif        
< answer1  gd ="1" > 向其余人唠叨,抱怨; </ answer1 >
None.gif        
< answer2  gd ="3" > 偶尔会唠叨几句; </ answer2 >
None.gif        
< answer3  gd ="5" > 不记在心上,无所谓; </ answer3 >
None.gif        
< answer4  gd ="0" > 挖苦讽刺回击他(她); </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="11" >
None.gif        
< text > 当你的密友发脾气时,你会: </ text >
None.gif        
< answer1  gd ="1" > 焦虑,担心是不是自己的过错; </ answer1 >
None.gif        
< answer2  gd ="3" > 不住地问他(她)怎么啦; </ answer2 >
None.gif        
< answer3  gd ="5" > 不理睬,让密友自己恢复; </ answer3 >
None.gif        
< answer4  gd ="0" > 叫他(她)停止无理取闹; </ answer4 >
None.gif    
</ question >
None.gif    
< question  id ="12" >
None.gif        
< text > 你在与人发生争执后会: </ text >
None.gif        
< answer1  gd ="1" > 仍然坚持并想证明自己的观点; </ answer1 >
None.gif        
< answer2  gd ="3" > 假装什么也没有发生; </ answer2 >
None.gif        
< answer3  gd ="5" > 很快冷静下来并且道歉; </ answer3 >
None.gif        
< answer4  gd ="0" > 连着几天不理他(她); </ answer4 >
None.gif    
</ question >
None.gif
</ mentality >

ex40-1.htm:(测试的设置界面,选择要测试的题目数量)
None.gif <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
None.gif
< HTML >
None.gif
< HEAD >
None.gif
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb2312" />
None.gif
< TITLE >  测试设置界面  </ TITLE >
ExpandedBlockStart.gifContractedBlock.gif
< style > dot.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif.title 
{dot.gif}{font:24pt 楷体_gb2312;font:bold;color:Purple;}
None.gif
</ style >
None.gif
</ HEAD >
None.gif
None.gif
< BODY  bgcolor ="#6699FF" >
ExpandedBlockStart.gifContractedBlock.gif
< SCRIPT  LANGUAGE ="JavaScript" > dot.gif
InBlock.gif
<!-- 
InBlock.gif
//单击开始测试,将题目数量的信息通过URL传递到测试页面
InBlock.gif
function startTest()
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif    
var testData="?"+testNumber.value;
InBlock.gif    location.href
="ex40-2.htm"+testData;
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif
//-->
None.gif
</ SCRIPT >
None.gif
< div  align ="center" > 新建测试 </ div >
None.gif
< align ="center" > @请设置题目数量: </ p >
None.gif
< div  align ="center" >
None.gif
< select  name ="testNumber" >
None.gif    
< option  value ="5" > 5 </ option >
None.gif    
< option  value ="10" > 10 </ option >
None.gif    
< option  value ="所有" > 全部 </ option >
None.gif
</ select >
None.gif
</ div >
None.gif
< align ="center" >
None.gif
< input  type ="button"  name ="submit3"  value ="开始测验"  onClick ="startTest()" />
None.gif
</ p >
None.gif
</ BODY >
None.gif
</ HTML >

ex40-2.htm:(测试做题主界面)
None.gif <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
None.gif
< HTML >
None.gif
< HEAD >
None.gif
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb2312" />
None.gif
< TITLE >  测试界面  </ TITLE >
ExpandedBlockStart.gifContractedBlock.gif
< style > dot.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif.big 
{dot.gif}{font:bold;}
ExpandedSubBlockStart.gifContractedSubBlock.gif.showhand 
{dot.gif}{font:15pt;font:bold;cursor:hand;text-align:center;}
ExpandedSubBlockStart.gifContractedSubBlock.gif.ans 
{dot.gif}{border:outset;color:teal;}
ExpandedSubBlockStart.gifContractedSubBlock.gif.anssel 
{dot.gif}{border:outset;color:Aqua;}
ExpandedSubBlockStart.gifContractedSubBlock.gif.anst 
{dot.gif}{font:12pt;}
None.gif
</ style >
None.gif
</ HEAD >
None.gif
< BODY  bgcolor ="#6699FF"  onload ="getTestSet()" >
None.gif
<!--  使用HTML的隐藏表单来存储测试中的临时信息  -->
None.gif
< FORM  METHOD =POST  ACTION =""  NAME ="hiddenElements" >
None.gif
<!--  测试数量  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="testNum"  VALUE ="10" >
None.gif
<!--  当前测试题标号  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="nowNum"  VALUE ="0" >
None.gif
<!--  随机的测试题标号串  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="testNo"  VALUE ="0" >
None.gif
<!--  测试开始标志  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="testStart"  VALUE ="0" >
None.gif
<!--  测试结束标志  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="testOver"  VALUE ="0" >
None.gif
<!--  答案A-D  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="Answer1Value"  VALUE ="0" >
None.gif
< INPUT  TYPE ="hidden"  NAME ="Answer2Value"  VALUE ="0" >
None.gif
< INPUT  TYPE ="hidden"  NAME ="Answer3Value"  VALUE ="0" >
None.gif
< INPUT  TYPE ="hidden"  NAME ="Answer4Value"  VALUE ="0" >
None.gif
<!--  测试分数  -->
None.gif
< INPUT  TYPE ="hidden"  NAME ="AnswerQueue"  VALUE ="0" >
None.gif
</ FORM >
None.gif
<!--  调用ex40.js中的脚本程序  -->
None.gif
< script  language ="javascript"  src ="ex40.js" ></ script >
None.gif
< XML  id ="qusXML"  src ="testfile.xml" ></ XML >
None.gif
< input  type ="button"  value ="开始"  onclick ="startTest()" >
None.gif
< input  type ="button"  value ="下一题"  onclick ="nextQuestion()" >
None.gif
< input  type ="button"  value ="提示"  onclick ="showAnswer()" >
None.gif
< FORM  METHOD =POST  ACTION =""  NAME ="testArea" >
None.gif
< table  width ="100%"  border ="0" >
None.gif    
< tr >
None.gif    
<!--  显示当前题目的序号  -->
None.gif        
< td  width ="15%"  align ="center" >< div  id ="thisNum" ></ div ></ td >
None.gif        
< td >< div  id ="totalNum"  align ="center" /></ td >
None.gif        
< td  rowspan ="2"  valign ="top" />
None.gif    
</ tr >
None.gif    
< tr >
None.gif        
< td  height ="40"  align ="center" />
None.gif        
<!--  显示当前测试的问题  -->
None.gif        
< td  valign ="top" >< div  id ="qustext"  class ="big" ></ div ></ td >
None.gif    
</ tr >
None.gif    
<!--  显示当前题目的选项  -->
None.gif    
< tr >
None.gif        
< td  width ="8%"  class ="showhand"  onclick ="setAnsA()" >
None.gif            
< div  id ="pA" >< div  class ="ans" > A </ div ></ div >
None.gif        
</ td >
None.gif        
< td >< div  id ="a"  class ="anst" /></ td >
None.gif        
< td  width ="8%" >< input  type ="radio"  name ="checkAnswer"  value ="1" ></ td >
None.gif    
</ tr >
None.gif    
< tr >
None.gif        
< td  width ="8%"  class ="showhand"  onclick ="setAnsB()" >
None.gif            
< div  id ="pB" >< div  class ="ans" > B </ div ></ div >
None.gif        
</ td >
None.gif        
< td >< div  id ="b"  class ="anst" /></ td >
None.gif        
< td  width ="8%" >< input  type ="radio"  name ="checkAnswer"  value ="2" ></ td >
None.gif    
</ tr >
None.gif    
< tr >
None.gif        
< td  width ="8%"  class ="showhand"  onclick ="setAnsC()" >
None.gif            
< div  id ="pC" >< div  class ="ans" > C </ div ></ div >
None.gif        
</ td >
None.gif        
< td >< div  id ="c"  class ="anst" /></ td >
None.gif        
< td  width ="8%" >< input  type ="radio"  name ="checkAnswer"  value ="3" ></ td >
None.gif    
</ tr >
None.gif    
< tr >
None.gif        
< td  width ="8%"  class ="showhand"  onclick ="setAnsD()" >
None.gif            
< div  id ="pD" >< div  class ="ans" > D </ div ></ div >
None.gif        
</ td >
None.gif        
< td >< div  id ="d"  class ="anst" /></ td >
None.gif        
< td  width ="8%" >< input  type ="radio"  name ="checkAnswer"  value ="4" ></ td >
None.gif    
</ tr >
None.gif
</ table >
None.gif
</ FORM >
None.gif
</ BODY >
None.gif
</ HTML >

ex40.js:(处理脚本程序)
None.gif // 初始化程序,调入参数对测试数据初始化
None.gif
function  getTestSet()
None.gif{
None.gif    
// 从URL信息字串中读取参数值
None.gif
     var  dataQueue = location.search;
None.gif    dataQueue
= dataQueue.substring( 1 ,dataQueue.length);
None.gif    document.hiddenElements.testNum.value
= dataQueue;
None.gif    
// 生成题库总量
None.gif
     var  xmldoc = document.all( " qusXML " ).XMLDocument;
None.gif    
var  testNode = xmldoc.documentElement;
None.gif    
var  databaseN = testNode.attributes.getNamedItem( " qusNu " ).value;
None.gif    
if (dataQueue == " 所有 " )
None.gif    {
None.gif        document.hiddenElements.testNum.value
= databaseN;
None.gif    }
None.gif    totalNum.innerHTML
= " " + document.hiddenElements.testNum.value + " " ;
None.gif}
None.gif
None.gif
// 开始测试
None.gif
function  startTest()
None.gif{
None.gif    
if (document.hiddenElements.testStart.value == 1 && document.hiddenElements.testOver == 0 )
None.gif    {
None.gif        alert(
" 测试已经开始,快做题吧! " );
None.gif    }
None.gif    
else   if (document.hiddenElements.testOver.value == 1 )
None.gif    {
None.gif        alert(
" 测试已经结束,有什么收获么? " );
None.gif    }
None.gif    
else
None.gif    {
None.gif        document.hiddenElements.testStart.value
= 1 ;
None.gif        
// 调用处理XML文档信息的程序;
None.gif
        readXMLDocument();
None.gif    }
None.gif}
None.gif
None.gif
// 下一题
None.gif
function  nextQuestion()
None.gif{
None.gif    
if (document.hiddenElements.testStart.value == 0 )
None.gif    {
None.gif        alert(
" 请先单击开始按钮! " );
None.gif    }
None.gif    
else
None.gif    {
None.gif        
if (document.hiddenElements.testOver.value == 1 )
None.gif        {
None.gif            alert(
" 测试已经结束,有什么收获么? " );
None.gif        }
None.gif        
else
None.gif        {
None.gif            
if (checkAnswer() ==- 1 )
None.gif            {
None.gif                alert(
" 请选择一个答案: " );
None.gif            }
None.gif            
else
None.gif            {
None.gif                
// 将用户当前选择的答案转化为数值,累加到总分中
None.gif
                 var  gd = parseInt(document.hiddenElements.AnswerQueue.value);
None.gif                gd
+= parseInt(checkAnswer());
None.gif                document.hiddenElements.AnswerQueue.value
= gd;
None.gif                
// 显示下一题
None.gif
                readXMLDocument();
None.gif                
// 复位当前按钮
None.gif
                document.testArea.checkAnswer[ 0 ].checked = true ;
None.gif                document.testArea.checkAnswer[
0 ].checked = false ;
None.gif            }
None.gif        }
None.gif    }
None.gif}
None.gif
None.gif
function  showAnswer()
None.gif{
None.gif    alert(
" 暂不提供答案提示功能! " );
None.gif}
None.gif
None.gif
// 读取XML数据,显示题目
None.gif
function  readXMLDocument()
None.gif{
None.gif    
var  xmldoc,QuestionNode;
None.gif    
var  TextNode;
None.gif    
// 指向答案节点的数组
None.gif
     var  AnswerNode = new  Array( 4 );
None.gif    
// 定义测试题目总数和当前题目序号
None.gif
     var  tolnum,num;
None.gif    tolnum
= document.hiddenElements.testNum.value;
None.gif    num
= document.hiddenElements.nowNum.value;
None.gif    
// 如果当前题目序号等于总测试题数,结束测试(注意num是从0开始的)
None.gif
     if (num == tolnum)
None.gif    {
None.gif        document.hiddenElements.testOver.value
= 1 ;
None.gif        alert(
" 测试结束,来看看您的测试结果! " );
None.gif        getResult();
None.gif    }
None.gif    
else
None.gif    {
None.gif        num
++ ;
None.gif        document.hiddenElements.nowNum.value
= num;
None.gif        
// XML数据岛连接 读取测试题目信息
None.gif
        xmldoc = document.all( " qusXML " ).XMLDocument;
None.gif        
// XML文档数据调用
None.gif
        QuestionNode = xmldoc.getElementsByTagName( " question " );
None.gif        TextNode
= QuestionNode.item(num - 1 ).firstChild;
None.gif        AnswerNode[
0 ] = TextNode.nextSibling;
None.gif        AnswerNode[
1 ] = AnswerNode[ 0 ].nextSibling;
None.gif        AnswerNode[
2 ] = AnswerNode[ 1 ].nextSibling;
None.gif        AnswerNode[
3 ] = AnswerNode[ 2 ].nextSibling;
None.gif        
// 清空上次选择的答案,复位答案选框
None.gif
        pA.innerHTML = " <div class='ans'>A</div> " ;
None.gif        pB.innerHTML
= " <div class='ans'>B</div> " ;
None.gif        pC.innerHTML
= " <div class='ans'>C</div> " ;
None.gif        pD.innerHTML
= " <div class='ans'>D</div> " ;
None.gif        
// 调入试题答案,将相应的分值存储到表单中
None.gif
        document.hiddenElements.Answer1Value.value = AnswerNode[ 0 ].attributes.getNamedItem( " gd " ).value;
None.gif        document.hiddenElements.Answer2Value.value
= AnswerNode[ 1 ].attributes.getNamedItem( " gd " ).value;
None.gif        document.hiddenElements.Answer3Value.value
= AnswerNode[ 2 ].attributes.getNamedItem( " gd " ).value;
None.gif        document.hiddenElements.Answer4Value.value
= AnswerNode[ 3 ].attributes.getNamedItem( " gd " ).value;
None.gif        
// 在页面上显示试题和选项
None.gif
        thisNum.innerHTML = " " + num + " " ;
None.gif        qustext.innerHTML
= TextNode.firstChild.nodeValue;
None.gif        a.innerHTML
= AnswerNode[ 0 ].firstChild.nodeValue;
None.gif        b.innerHTML
= AnswerNode[ 1 ].firstChild.nodeValue;
None.gif        c.innerHTML
= AnswerNode[ 2 ].firstChild.nodeValue;
None.gif        d.innerHTML
= AnswerNode[ 3 ].firstChild.nodeValue;
None.gif    }
None.gif}
None.gif
None.gif
// 参照隐藏表单中的分数值将选择转化为分数
None.gif
function  checkAnswer()
None.gif{
None.gif    
var  i = 0 ;
None.gif    
while (i < 4 &&! document.testArea.checkAnswer[i].checked)
None.gif        i
++ ;
None.gif    
switch (i)
None.gif    {
None.gif        
case   0 : return  document.hiddenElements.Answer1Value.value;
None.gif        
case   1 : return  document.hiddenElements.Answer2Value.value;
None.gif        
case   2 : return  document.hiddenElements.Answer3Value.value;
None.gif        
case   3 : return  document.hiddenElements.Answer4Value.value;
None.gif        
default : return   - 1 ;        
None.gif    }
None.gif}
None.gif
None.gif
// 显示测试结果
None.gif
function  getResult()
None.gif{
None.gif    document.hiddenElements.testOver.value
= 1 ;
None.gif    
var  testgd = document.hiddenElements.AnswerQueue.value;
None.gif    
var  titlegd = document.hiddenElements.testNum.value * 5 ;
None.gif    
var  dig = testgd / titlegd;
None.gif    
var  result = " 您的分数为 " + testgd + " (最高 " + titlegd + " 分),正处于 " ;
None.gif    
if (dig <= 0.33 )
None.gif        result
+= " 儿童时期 " ;
None.gif    
else   if (dig < 0.66 )
None.gif        result
+= " 青少年时期 " ;
None.gif    
else
None.gif        result
+= " 成年时期 " ;
None.gif    alert(result);
None.gif}
None.gif
None.gif
// 使用CSS样式定义处理按钮效果
None.gif
function  setAnsA()
None.gif{
None.gif    document.testArea.checkAnswer[
0 ].checked = true ;
None.gif    pA.innerHTML
= " <div class='anssel'>A</div> " ;
None.gif    pB.innerHTML
= " <div class='ans'>B</div> " ;
None.gif    pC.innerHTML
= " <div class='ans'>C</div> " ;
None.gif    pD.innerHTML
= " <div class='ans'>D</div> " ;
None.gif}
None.gif
function  setAnsB()
None.gif{
None.gif    document.testArea.checkAnswer[
1 ].checked = true ;
None.gif    pA.innerHTML
= " <div class='ans'>A</div> " ;
None.gif    pB.innerHTML
= " <div class='anssel'>B</div> " ;
None.gif    pC.innerHTML
= " <div class='ans'>C</div> " ;
None.gif    pD.innerHTML
= " <div class='ans'>D</div> " ;
None.gif}
None.gif
function  setAnsC()
None.gif{
None.gif    document.testArea.checkAnswer[
2 ].checked = true ;
None.gif    pA.innerHTML
= " <div class='ans'>A</div> " ;
None.gif    pB.innerHTML
= " <div class='ans'>B</div> " ;
None.gif    pC.innerHTML
= " <div class='anssel'>C</div> " ;
None.gif    pD.innerHTML
= " <div class='ans'>D</div> " ;
None.gif}
None.gif
function  setAnsD()
None.gif{
None.gif    document.testArea.checkAnswer[
3 ].checked = true ;
None.gif    pA.innerHTML
= " <div class='ans'>A</div> " ;
None.gif    pB.innerHTML
= " <div class='ans'>B</div> " ;
None.gif    pC.innerHTML
= " <div class='ans'>C</div> " ;
None.gif    pD.innerHTML
= " <div class='anssel'>D</div> " ;
None.gif}

功能和原理:
开始先选择题目数量,通过URL参数传递到测试页面,并设置隐藏题目总数字段的值,然后分别对下一题等按钮进行事件处理,最后判断测试完毕后给出一直进行计算放在隐藏字段中的总得分数.

转载于:https://www.cnblogs.com/wddavid/archive/2005/07/29/202590.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值