jsp代码:
<%
int i = 1;
%>
<s:iterator value="#request.listSelXZ"> <%=i%>: <s:property value="question" />
<br>
<input type="radio" name="<%= i%>" value="A" onclick="choose(this)" >
A:<s:property value="optionA" />
<br>
<input type="radio" name="<%= i%>" value="B" onclick="choose(this)" >
B:<s:property value="optionB" />
<br>
<input type="radio" name="<%= i%>" value="C" onclick="choose(this)" >
C:<s:property value="optionC" />
<br>
<input type="radio" name="<%= i%>" value="D" onclick="choose(this)" >
D:<s:property value="optionD" />
<br> <input type="hidden" name="rightAnswer" id="rightAnswer" value="<s:property value="answer"/>">
<%--正确答案 --%>
<%
i++;
%>
</s:iterator>
jquery代码:
<script type="text/javascript">
function choose(node) {
if(node.checked){
var th=node.name;
var stuAnswer=node.value;

$.post("stuAnswerXZ.action",
{ "th":th,/* 题号,不是题库中题目的id */
  "stuAnswer":stuAnswer,/* 学生答案 */
  "rightAnswer":$("#rightAnswer").val()/* 正确答案 */
    });
}
}

</script>

解决方案 »

  1.   

    你要了解什么,都没有描述你的问题。
    你贴出来的代码与 iterator中getElementById没有关系吧?
      

  2.   

    不好意思啊,题目没有说清楚,我的意思是:iterator中每一个对应有隐藏的 answer
    我想获得每一题的隐藏的rightAnswer,然后传到后台,可是我在后台得到时,只能得到同一个rightAnswer,
    比如说1,2,3,4题的选项分别是ABCD,可我在后台得到的是rightAnswer是4个A
      

  3.   


    不好意思啊,题目没有说清楚,我的意思是:iterator中每一个对应有隐藏的 answer
    我想获得每一题的隐藏的rightAnswer,然后传到后台,可是我在后台得到时,只能得到同一个rightAnswer,
    比如说1,2,3,4题的选项分别是ABCD,可我在后台得到的是rightAnswer是4个A
      

  4.   


     <input type="hidden" name="rightAnswer" id="rightAnswer" value="<s:property value="answer"/>">
     这里面没有变量,你$("#rightAnswer").val()得到其实是其中固定的一个的值。
      

  5.   

    代码太少了 不知道你这个ajax 调用几次。是一个问题调用一次吗? $("#rightAnswer").val() 这个肯定永远是一个了啊  如果你是点选项触发 ajax 的话 这个参数应该是 $(this).parents('.mainDiv').find('#rightAnswer').val(); 来获取 不知道 你的界面结构 。如果你的每个问题是包在一个div里面的话 给那个div价格 mainDiv的class 这样来获取。
    如果没有包 是同一级的话 貌似用 nextAll 方法获取 记不清了
      

  6.   


    我以为,value="<s:property value="answer"/>这里每道题的answer不同,应该就是变量,但是我又是这样写的name="rightAnswer" id="rightAnswer"   我对前台不太了解,有时就是自己想的,就不知道错在哪里了
      

  7.   

    <form action="resultXZ.action" method="post">
    <%
    int i = 1;
    %>
    <s:iterator value="#request.listSelXZ"> <%=i%>: <s:property value="question" />
    <br>
    <input type="radio" name="<%= i%>" value="A" onclick="choose(this)" >
    A:<s:property value="optionA" />
    <br>
    <input type="radio" name="<%= i%>" value="B" onclick="choose(this)" >
    B:<s:property value="optionB" />
    <br>
    <input type="radio" name="<%= i%>" value="C" onclick="choose(this)" >
    C:<s:property value="optionC" />
    <br>
    <input type="radio" name="<%= i%>" value="D" onclick="choose(this)" >
    D:<s:property value="optionD" />
    <br> <input type="hidden" name="rightAnswer" id="rightAnswer" value="<s:property value="answer"/>">
    <%--正确答案 --%>
    <%
    i++;
    %>
    </s:iterator>
    <%-- <input type="hidden" id="countXZ" value="<%=request.getAttribute("countXZ") %>>"> 选择题总数 --%>
    <input type="submit" value="提交">
    <%--注:暂时还没有写,只能提交一次,提交过之后,此按钮就不能再显示为可以提交了 --%>
    </form>这就是我全部的代码了,我没有用div
      

  8.   

    回复7楼:我是每当有radio被点击时就调用
      

  9.   


    我说的应该比较清楚了吧 就是通过Id 获取的对象 永远只有一个 。如果 有多个一样的ID 貌似只获取第一个。 你说需要的 就是要获取某个特定的。
       function choose(node) {
            if(node.checked){
                var th=node.name;
                var stuAnswer=node.value;
                 var value=$(node).nextAll("#rightAnswer").val();
                $.post("stuAnswerXZ.action",
                        { "th":th,/* 题号,不是题库中题目的id */
                          "stuAnswer":stuAnswer,/* 学生答案 */
                          "rightAnswer":value/* 正确答案 */
                });
            }
        } 
    这样试试 没有调试 不知道对不对 不过思想肯定是对的。  就是获取到你点的那个radio 下面的 id为 rightAnswer的val。
     其实我不提倡这样写。 我的习惯是 把一个循环都包到一个Div 里面去。 给这个div一个 空class 叫“mainDiv”
     然后获取这个里面任何东西的社会 都是 var $mainDiv=$(this).parents('.mainDiv');
    然后通过 $mainDiv.find('xxxxx') 来获取