【发布时间】: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按钮,我想检索subject、professor和time。请注意,我正在使用 while 循环循环表格行,这就是为什么如果我点击 evaluate 按钮,我会继续获取最后一行的详细信息
【问题讨论】:
-
“检索所有数据” 代码在哪里? --- 什么是
regisID、courseName和SID? --- 假设显示的代码在使这些代码可用的循环内,您将使用id='evaluateBtn'创建 N 按钮,这是非常错误的,因为 ID 应该是唯一的。然后,您将click处理程序附加到带有id的按钮(嗯,哪个?),它会构建一个form,其隐藏字段的值为regisID,但哪个regisID?据推测,每一行都有不同的值。重新考虑你在做什么,也许看看 HTMLdata属性。 -
为什么不在相应的表格行上注册一个 clicklistener 呢?或者将 ID 附加到您已经附加的按钮上?
-
@Andreas 看到编辑,我创建按钮是因为如果状态为 1(意味着这已被评估)并且如果为 0,则重定向到 servlet 时我想禁用按钮
-
如果实际上只启用一个按钮并给出该 ID,那么也许您也应该只注册一次
click处理程序,在相同的条件下 (num===0)。