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>
<%
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>
你贴出来的代码与 iterator中getElementById没有关系吧?
我想获得每一题的隐藏的rightAnswer,然后传到后台,可是我在后台得到时,只能得到同一个rightAnswer,
比如说1,2,3,4题的选项分别是ABCD,可我在后台得到的是rightAnswer是4个A
不好意思啊,题目没有说清楚,我的意思是:iterator中每一个对应有隐藏的 answer
我想获得每一题的隐藏的rightAnswer,然后传到后台,可是我在后台得到时,只能得到同一个rightAnswer,
比如说1,2,3,4题的选项分别是ABCD,可我在后台得到的是rightAnswer是4个A
<input type="hidden" name="rightAnswer" id="rightAnswer" value="<s:property value="answer"/>">
这里面没有变量,你$("#rightAnswer").val()得到其实是其中固定的一个的值。
如果没有包 是同一级的话 貌似用 nextAll 方法获取 记不清了
我以为,value="<s:property value="answer"/>这里每道题的answer不同,应该就是变量,但是我又是这样写的name="rightAnswer" id="rightAnswer" 我对前台不太了解,有时就是自己想的,就不知道错在哪里了
<%
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
我说的应该比较清楚了吧 就是通过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') 来获取