【问题标题】:Request variable from forEach loop jQuery来自 forEach 循环 jQuery 的请求变量
【发布时间】:2017-05-03 22:12:18
【问题描述】:

我正在尝试在节点中进行多项选择问卷。我有一个 forEach 循环打印问题和答案字段的表单。问题是我无法在我正在进行比较的 jQuery 文件中获得正确的变量。

在 EJS 中使用 forEach 循环并在 jQuery 文件中检查它。

jQuery 文件:

$(document).ready(function(){
    $('.bcheck').click(function(){
        var on = 1;
        var ans = $(this).attr('realanswer');
        var theirAns = $("input[placeholder=Answer]").val();
        console.log(ans);
        if(ans == theirAns){
            //DO SOMETHING
        }
    });
});

var theirAns = $("input[placeholder=Answer]").val(); 的值保留在迭代中的第一个元素。我可以使用这个函数来获取不是我点击的项目元素的值吗?

EJS 文件的 HTML:

<% topic.questions.forEach(function(question){ %>
    <% if(question.difficulty == 10){ %>
        <form action="/lesson/<%= lesson._id %>/topic/<%= topic._id %>/course/<%= question._id %>/quest?_method=PUT" method="POST">
            <div class="quest_info questionf">
            <%= question.question %>?
                <div class="text_input">
                    <input type="hidden" name="res[_id]" value="<%= question._id %>">
                    <input type="hidden" name="realAnswer" value="<%= question.answer %>">
                    <input id="correct" type="hidden" name="res[correct]" value="<%= false %>">

                    <% if(question.question_type == "multiple"){ %>
                        <% var ran = ranNumber(0, 3) %>
                        <% var n = 0; %>
                        <% question.wrong_answers.forEach(function(wAns){ %>
                            <div class="bw btn btn-success" value="<%= wAns %>"> <%= wAns %> </div>
                            <% if(ran == n){ %>
                                <div class="ba btn btn-success "><%= question.answer %></div>
                            <% }; %>
                            <% n += 1; %>
                        <% }); %>
                        <input type="hidden" name="res[answer]" value="<%= question.answer %>" placeholder="Answer">
                    <% }else{%>
                        <input type="text"   name="res[answer]" placeholder="Answer" >
                        </input>

                        </div>
                    <% }; %>
                    <div class="text_input">
                        <div class="bcheck btn btn-primary pull-right" realanswer="<%= question.answer %>" >Check Answer</div>
                    </div>

                    <% x += 1 %>

                <div class="text_input">
                </div>
            </div>
    <% }; %>
<% }); %>

【问题讨论】:

  • 可以分享一下html吗?你在说什么 forEach 循环?
  • 我已经添加了 forEach 循环。您可以忽略多个问题类型的任何内容。我只想为 jQuery 文件中的每次迭代获取&lt;input type="text" name="res[answer]" placeholder="Answer" &gt; 的值
  • $(this).closest('form').find("input[placeholder=Answer]").val();
  • 我确实试过了,但它仍然只返回第一个值。
  • @JoshHorton 我相信它会起作用var theirAns = $(this).closest('form').find("input[placeholder=Answer]").va‌​l(); 再试一次......你可以使用$(document).on('click','.bcheck',function(){ // your code here});

标签: javascript jquery node.js foreach


【解决方案1】:

您正在尝试使用$("input[placeholder=Answer]").val() - 它确实会返回第一个值。

如果您想检查与选择器匹配的每个元素 $("input[placeholder=Answer]").each() 会有所帮助。这是一个基于您的代码 sn-p 的示例。

$(document).ready(function() {
  $('.bcheck').click(function() {
    var ans = $(this).data('realanswer');

    $("input[placeholder=Answer]").each(function() {
      var theirAns = Number($(this).val());

      if (ans === theirAns) {
        console.log('Nice');
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="bcheck" data-realanswer="42">check</button>

<input placeholder="Answer" type="text">
<input placeholder="Answer" type="text">
<input placeholder="Answer" type="text">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2017-08-27
    • 1970-01-01
    相关资源
    最近更新 更多