我就是想把mainTest中的值通过JS赋给一个hidden类型的input的value,然后在score.jsp页面通过
request.getParameter取得mainTest页面中hidden类型的input的value,可是试了好多办法都传不过去
!!!!都为空啊,可是网上都说好使为什么我用就不好使了呢!!!???崩溃呀!!!各路大神救命啊!!!
mainTest.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="score.jsp" method="post" name="mainTest" id="mainTest" >    <iframe src="test.jsp" width="1200" height="1000" id="quesFrame" name="ques">
    </iframe>    <input type="hidden" value="" name="selectionOfStu" id="selectionOfStu"  />
    
    <p><input type="submit" value="我要交卷" onClick=getSlcAnswer() /></p>
</form>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js">
        function getSlcAnswer(){
            document.mainTest.getElementById("selectionOfStu").value="ma";
            
        }
    </script>
</body>
</html>score.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<%      String strSlcStu=request.getParameter("selectionOfStu");
    System.out.println("slc:"+strSlcStu);    
%>
<body></body>
</html>

解决方案 »

  1.   

     function getSlcAnswer(){
                document.getElementById("selectionOfStu").value="ma";
                
            }直接这样就行了,getElementById方法只有document有。其他dom元素没有这个方法的。一般来说一个页面上不会出现重复id的情况,所以没有必要每个dom节点都有自己的getElementById方法。
      

  2.   


    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js">
            function getSlcAnswer(){
                document.mainTest.getElementById("selectionOfStu").value="ma";
                
            }
        </script>
    你这是干嘛?又指定script标签的src,又在里面写自己的代码??<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript"> 
    function getSlcAnswer(){
        document.mainTest.getElementById("selectionOfStu").value="ma";
    }
    </script>
      

  3.   

    大神那,太感谢了!再请教你一个问题,分都给你了。就是我在test.jsp中把值存储在cookie中,比如
    document.cookie="selectionA=A";
    然后在mainTest.jsp页面中将cookie的值赋给js变量
    function getSlcAnswer(){
        var strCookie=document.cookie;
        document.mainTest.getElementById("selectionOfStu").value=strCookie;
    }
    可是这个cookie的值为空时怎么回事???
    test.jsp的代码如下:
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%>
    <%@page import="java.sql.*" %>
    <%@page import="java.io.*" %>
    <%@page import="cec.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>考试界面</title>
    </head>
    <body>
    <%
        Connection con=null;
        ResultSet rs=null;
        Statement stmt=null;
        String sele="selection";
        Question myQuestion=new Question();
        Student student=new Student();
        int count=3,totalCount=6;
        int randomNum=0;
        try{
         String connStr="jdbc:mysql://localhost:3306/question";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection(connStr,"root","071112");
            stmt=con.createStatement();
            for(randomNum=1;randomNum<=totalCount;randomNum++){
             String strKey="select theKey from questiondatabase where quesNum='"+randomNum+"'";
                rs=stmt.executeQuery(strKey);
                if(rs.next()){
                 student.setStandAnsw(rs.getString("theKey"));
                }
            }
            //System.out.println(student.getStandAnsw());
            for(randomNum=1;randomNum<=count;randomNum++){
                myQuestion.randomQuestion(randomNum,rs,stmt);
    %><p><%=randomNum%>.<%=myQuestion.getQuestionText() %>()</p>
    <p><input type="radio"  value="A" name="<%=sele+randomNum%>"/>A.<%=myQuestion.getSelectionA() %></p>  
    <p><input type="radio"  value="B" name="<%=sele+randomNum%>"/>B:<%=myQuestion.getSelectionB() %></p> 
    <p><input type="radio"  value="C" name="<%=sele+randomNum%>"/>C:<%=myQuestion.getSelectionC() %></p> 
    <p><input type="radio"  value="D" name="<%=sele+randomNum%>"/>D:<%=myQuestion.getSelectionD() %></p>
    <%}%><%} 
        catch(Exception e){
         e.printStackTrace();
         System.out.println("Error!");
        }
        finally{
         if(rs!=null){
         rs.close();
         }
         if(con!=null){
         con.close();
         }
         }
        
    %>
        <script type="text/javascript">
            var count=3;
            String sele="sele";
            String selection="selection";
            function getSlcValu(slcNum){
             var slc=document.getElementsByName(slcNum);
             var slcValu;
             for(var i=0;i<=slc.length;i++){
             if(slc[i].checked){
             slcValu=slc[i].value;
             break;
             }
             else{
             continue;
             }
             }
             return slcValu;
            }
            for(var numQues=1;numQues<=count;numQues++){
         document.cookie="'"+sele+numQues+"'='"+getSlcValu(selection+numQues)"'";
            }
        </script></body>
    </html>
      

  4.   

    var count=3;
            String sele="sele";
            String selection="selection";
            function getSlcValu(slcNum){
                var slc=document.getElementsByName(slcNum);
                var slcValu;
                for(var i=0;i<=slc.length;i++){
                    if(slc[i].checked){
                        slcValu=slc[i].value;
                        break;
                    }
                    else{
                        continue;
                    }
                }
                return slcValu;
            }
            for(var numQues=1;numQues<=count;numQues++){
                document.cookie="'"+sele+numQues+"'='"+getSlcValu(selection+numQues)"'";
            }你这代码是什么啊?你把JS当JAVA来写了?        var count=3;
            var sele="sele";
            var selection="selection";
            function getSlcValu(slcNum){
                var slc=document.getElementsByName(slcNum);
                var slcValu;
                for(var i=0;i<=slc.length;i++){
                    if(slc[i].checked){
                        slcValu=slc[i].value;
                        break;
                    }
                    else{
                        continue;
                    }
                }
                return slcValu;
            }
            for(var numQues=1;numQues<=count;numQues++){
                document.cookie+="'"+sele+numQues+"'='"+getSlcValu(selection+numQues)"'";
            }
    改成这样试试看。
      

  5.   

     document.cookie+="'"+sele+numQues+"'='"+getSlcValu(selection+numQues)+"'";
      

  6.   

    还是不行。。加了最后的那个+好也不好使,而且我把document.cookie后面的那个+号去掉也不行,把
    sele+numQues和selection+numQues先赋给其他变量再用也不好使
      

  7.   

    <p><input type="radio"  value="A" name="<%=sele+randomNum%>"/>A.<%=myQuestion.getSelectionA() %></p>  
    <p><input type="radio"  value="B" name="<%=sele+randomNum%>"/>B:<%=myQuestion.getSelectionB() %></p> 
    <p><input type="radio"  value="C" name="<%=sele+randomNum%>"/>C:<%=myQuestion.getSelectionC() %></p> 
    <p><input type="radio"  value="D" name="<%=sele+randomNum%>"/>D:<%=myQuestion.getSelectionD() %></p>你这里input的name是sele+随机数你JS代码里又是根据selection+numQues来取input,逗人玩呢?
      

  8.   

    可是selection+numQues和<%=sele+randomNum%>的值是一样的呀,难道我这么通过input的名字不能取么?那应该怎么才能取到啊?还请多多指教,非常感激!
      

  9.   

    function getSlcAnswer(){
        var strCookie=document.cookie;
        document.mainTest.getElementById("selectionOfStu").value=strCookie;
    }给你说了不能mainTest.getElementById了,你代码里还是这样?不是刚说过getElementById只有document有么?
      

  10.   

    function getSlcValu(slcNum){
                var slc=document.getElementsByName(slcNum);
                var slcValu;
                for(var i=0;i<=slc.length;i++){
                    if(slc[i].checked){
                        slcValu=slc[i].value;
                        break;
                    }
                    else{
                        continue;
                    }
                }
                return slcValu;
            }
            for(var numQues=1;numQues<=count;numQues++){
                document.cookie="'"+sele+numQues+"'='"+getSlcValu(selection+numQues)"'";
            }还有这里,仔细看一下你是想把选中的input的值存到cookie里面,这样你不是每个input 都要朝cookie里面写一次么?function getSlcValu(slcNum){
                var slc=document.getElementsByName(slcNum);
                var slcValu;
                for(var i=0;i<=slc.length;i++){
                    if(slc[i].checked){
                        slcValu=slc[i].value;
                        document.cookie="'"+slc[i].name+"'='"+slcValu+"'";
                        break;
                    }
                    else{
                        continue;
                    }
                }
                return slcValu;
            }
    getSlcValu();
    不知道你怎么想的。
      

  11.   

    实在抱歉,是我贴错了,我运行的程序里是没有mainTest的,我的程序里就是document.getElementById("selectionOfStu").value=strCookie;
      

  12.   

    看看你服务器生成的html代码是什么样吧。你服务器端的代码,我看不懂,random了半天,都不知道生成的东西是啥。
      

  13.   

    装个firefox,再装个firebug,自己调试去吧首先确保代码不出错,第二确保生成的html代码input的name都是一样的,不然getElementsByName只能取到一个。