Ray-Yan
2016-10-18 03:41
采纳率: 65.9%
浏览 1.3k
已采纳

在HTML代码中间执行JS问题

如下代码所示:

 <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还在循环里,能够正确获取值并累加分数。谢谢!麻烦给出代码提示。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 已采纳

    你的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>
    
    打赏 评论
  • qq_23113827 2016-10-18 03:49

    我觉得你这个js放在这里就是个错误,拿出去,至于你累加分数,js写个循环,var一个参数,每次循环取一个值,然后累加,你这么写应该是有问题的

    打赏 评论
  • qq_23113827 2016-10-18 03:54

    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;}
    }

    打赏 评论
  • qq_23113827 2016-10-18 03:55

    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);

    这段应该能帮到你

    打赏 评论
  • qq_23113827 2016-10-18 03:56

    不对,找错了,这段不对

    打赏 评论
  • qq_21873571 2016-10-18 04:00
      var r_answer = $('#r input[name="choice"]:checked ').val();
    

    你的name都变了,还能这样取值?明显取不到吧

    打赏 评论
  • 阮二 2016-10-19 01:39

    1:在js里面拼接html 然后放到某个页面元素中
    2:使用EL表达式循环生成HTML
    3:后台直接拼接HTML,前台直接innerHTML()
    自己慢慢玩儿吧

    打赏 评论

相关推荐 更多相似问题