如下代码所示:
<input type="hidden" id="sum" name="sum">
<input type="hidden" id="rsum" value="0">
<c:forEach items="${radioTest}" var="radioTest" varStatus="status">
<div id="r">
${status.index+1}.<font color="orange">(单选,${paperInfo.rs}分)</font>${radioTest.body}
<br><input type="radio" name="choice${status.index+1}" value="A"> A <font>${radioTest.a}</font>
<br><input type="radio" name="choice${status.index+1}" value="B"> B <font>${radioTest.b}</font>
<br><input type="radio" name="choice${status.index+1}" value="C"> C <font>${radioTest.c}</font>
<br><input type="radio" name="choice${status.index+1}" value="D"> D <font>${radioTest.d}</font>
<input type="hidden" id="ra" value="${radioTest.answer}">
<input type="hidden" id="rg" value="${paperInfo.rs}">
<br>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js">
var r_answer = $('#r input[name="choice"]:checked ').val();
var br_answer = $("#ra").val();
var rg = $("#rg").val();
alert(r_answer);
var rsum = $("#rsum").val();
if( br_answer==r_answer){
rsum = rsum+rg;
}
//$("#sum").val("100");
$("#sum").val(rsum);
</script>
<br></div>
本段代码是通过循环打印每一道单选题,并通过JS获得答案与正确答案进行比较累加分值。可是代码是有问题,即JS代码不执行。
如果将JS放到最后就无法实现循环比较的功能了,请问各位大侠有没有解决办法,就是JS还在循环里,能够正确获取值并累加分数。谢谢!麻烦给出代码提示。
你的c:forEach到哪结束?不会是
</script>
<br></div>
这里吧,这样会输出多个js块了,并且id重复了,js文件文件和内置代码不要公用一个script块,要不外部js无法导入,而且jquery导入一次就行了,放入循环外
var rg = $("#rg").val();只能获取到第一个出现的控件,无法操作后续出现的控件,id搞唯一来,连接上题目的id或者${status.index+1}那个东东
代码里面也要加上
<input type="hidden" id="sum" name="sum">
<input type="hidden" id="rsum" value="0">
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
<c:foreach items="${radioTest}" var="radioTest" varstatus="status">
<div id="r${status.index+1}">
${status.index+1}.<font color="orange">(单选,${paperInfo.rs}分)</font>${radioTest.body}
<br><input type="radio" name="choice${status.index+1}" value="A"> A <font>${radioTest.a}</font>
<br><input type="radio" name="choice${status.index+1}" value="B"> B <font>${radioTest.b}</font>
<br><input type="radio" name="choice${status.index+1}" value="C"> C <font>${radioTest.c}</font>
<br><input type="radio" name="choice${status.index+1}" value="D"> D <font>${radioTest.d}</font>
<input type="hidden" id="ra${status.index+1}" value="${radioTest.answer}">
<input type="hidden" id="rg${status.index+1}" value="${paperInfo.rs}">
<br>
<script>
var r_answer = $('#r${status.index+1} input[name="choice${status.index+1}"]:checked ').val();
var br_answer = $("#ra${status.index+1}").val();
var rg = $("#rg${status.index+1}").val();
alert(r_answer);
var rsum = $("#rsum").val();
if (br_answer == r_answer) {
rsum = rsum + rg;
}
//$("#sum").val("100");
$("#sum").val(rsum);
</script>
<br>
</div>
我觉得你这个js放在这里就是个错误,拿出去,至于你累加分数,js写个循环,var一个参数,每次循环取一个值,然后累加,你这么写应该是有问题的
function judge(){
var Maxcounter,sum,i;
Maxcounter=0;
Maxcounter=document.getElementById('myin').value;
//Maxcounter=document.test.myin.value;
sum=0;
if((Maxcounter100))
{
alert
}
else
{
for(i=0;i<=Maxcounter;i++)
{sum=sum+i;}
}
let a = [8, 6, 15, 24, 20];
function increase (index, current) {
let sup = a[index];
if (current > sup) return;
$(`.countNum:eq(${index})`).text(current);
setTimeout(() => {
increase(index, current + 1)
}, 1000);
}
for (let i = 0; i <= a.length; i++) increase(i, 0);
这段应该能帮到你
不对,找错了,这段不对
var r_answer = $('#r input[name="choice"]:checked ').val();
你的name都变了,还能这样取值?明显取不到吧
1:在js里面拼接html 然后放到某个页面元素中
2:使用EL表达式循环生成HTML
3:后台直接拼接HTML,前台直接innerHTML()
自己慢慢玩儿吧