【问题标题】:How do I select a particular row of a table from database?如何从数据库中选择表的特定行?
【发布时间】:2018-04-25 19:17:49
【问题描述】:

我的html中有这个脚本,如果状态是0,可以点击按钮“evaluate”,如果没有,按钮就是hidden

$('#table-content').append 使用脚本中的 while 循环从我的数据库中检索所有数据。

我试图从表格中获取用户点击了哪一行,但我继续从表格中获取最后一行。

<%
    while (records.next()){
            String regisID = records.getString("registrationID");
            String courseName = records.getString("courseName");
            String profName = records.getString("professorName");
            String courseTime = records.getString("courseTime");
            String SID = records.getString("SID");
            int status = records.getInt("status");
    %>
        var num = <%= status %>;
        var btn = "";
        if(num===0)
            btn = "<td style='width: 10%;'><button type='button' id='evaluateBtn' class='btn btn-block btn-primary'>Evaluate</button></td>";
        else
            btn = "<td style='width: 10%;'><button type='button' class='btn btn-block btn-success disabled'>Done</button></td>";
        
        $('#table-content').append(
                "<tr>"+
                "<td style='width: 20%;'><%= courseName %></td>"+
                "<td style='width: 25%;'><%= profName %></td>"+
                "<td style='width: 20%;'> <%= courseTime %></td>"+
                btn+
                "</tr>"
        );
        
        $("#evaluateBtn").click(function() {
            var form = document.createElement("form");
            document.body.appendChild(form);
            $(form).append("<input type='hidden' name='registrationID' value='<%= regisID %>'/>");
            $(form).append("<input type='hidden' name='courseName' value='<%= courseName %>'/>");
            $(form).append("<input type='hidden' name='SID' value='<%= SID %>'/>");
            form.action="http://localhost:8080/NewDesignV1/evaluate.action";
            form.method="post";
            form.submit();
            $(form).remove();
        });
        <%} %>

如果我点击evaluate按钮,我想检索subjectprofessortime。请注意,我正在使用 while 循环循环表格行,这就是为什么如果我点击 evaluate 按钮,我会继续获取最后一行的详细信息

See attached image

【问题讨论】:

  • “检索所有数据” 代码在哪里? --- 什么是regisIDcourseNameSID? --- 假设显示的代码在使这些代码可用的循环内,您将使用id='evaluateBtn' 创建 N 按钮,这是非常错误的,因为 ID 应该是唯一的。然后,您将click 处理程序附加到带有id 的按钮(嗯,哪个?),它会构建一个form,其隐藏字段的值为regisID,但哪个regisID?据推测,每一行都有不同的值。重新考虑你在做什么,也许看看 HTML data 属性。
  • 为什么不在相应的表格行上注册一个 clicklistener 呢?或者将 ID 附加到您已经附加的按钮上?
  • @Andreas 看到编辑,我创建按钮是因为如果状态为 1(意味着这已被评估)并且如果为 0,则重定向到 servlet 时我想禁用按钮
  • 如果实际上只启用一个按钮并给出该 ID,那么也许您也应该只注册一次 click 处理程序,在相同的条件下 (num===0)。

标签: java jsp


【解决方案1】:

据我了解,您希望为单击的按钮选择对应的行。正如您所说,您正在从服务器接收记录并通过 JQuery 进行迭代。据我所知,ID 元素在文档中应该是唯一的,并且在循环中创建了多个 ID 元素。您可以使用 Class 而不是 ID。要选择当前表格行,您可以使用以下代码。 这只是一个例子:

<table>
 <tr>
   <td class="one">A</td>
   <td style='width: 20%;' class="courseName">ABc</td>
    <td><button class="the-btn">
     Click
    </button></td>
 </tr>
 <tr>
   <td class="one">b</td>    
   <td style='width: 20%;' class="courseName">DEF</td>
   <td><button class="the-btn">
     Click
   </button></td>
 </tr>

和 JS:

   $(document).ready(function(){
      $('.the-btn').on('click',function(){
       alert($(this).closest('tr').find('.courseName').text());
   });
});

这里是Fiddle

【讨论】:

  • 我正在使用 while 循环进行迭代,并且我已经有了包含我的 css 的类。我将如何管理它?
  • 尝试将您的点击事件绑定到类而不是 ID,因为 ID 在 HTML 文档中必须是唯一的。有关更多信息,请访问 w3schools.com/tags/att_global_id.asp。您可以将单击事件绑定到现有的按钮类之一(如果这些类未在页面上的任何其他位置使用)或者您可以将新类添加到按钮,即 $('.btn-block').on('click ',function(){ /*你的代码在这里*/ });
  • 还有一件事,你应该让你的点击事件远离while循环并通过HTML DOM访问你的元素
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
相关资源
最近更新 更多