最近在写一个留言板,有个功能是管理员可以删除任意一条留言,于是我先在数据库中将所有数据取出来,用一个表格列出来,在每一行的后面加上一个删除的按钮。但是我遇到了很大的问题就是:点击一个按钮之后如何获得这一行的其中一个信息。只有获取了这一行的某个信息我才能到数据库中删掉这一行。
首先table中是不能嵌套form的,form中可以嵌套table。所以下面这种写法是错的:
<table>
<tr>
<form></form>
</tr>
.
.
.
<tr>
<form></form>
</tr>
</table>
假如按钮的数量是确定的而且较少,那我们给每个按钮设置一个函数也可以。但是在我的代码中,按钮是用for循环生成的,按钮的数量不是我能控制的,而且可能会很多。解决方法就是给按钮的响应函数中加入参数,将一行的某个信息做参数传进函数中。我的代码如下:
在table中,我先从数据库中取回所有数据放到一个list中,然后再循环输出。然后在响应函数中传入了留言的序号这一参数。
<table align="center" border="1" width="50%" cellpadding="8">
<tr>
<th align="center" colspan=6>留言列表</th>
</tr>
<tr>
<th align="center" width=100>序号</th>
<th align="center" width=500>标题</th>
<th align="center" width=100>作者</th>
<th align="center" width=100>操作</th>
</tr>
<%
List<Message> list = (List<Message>) request.getAttribute("list");
int i = 1;
for (Message m : list) {
%>
<tr align="center" id="<%=i%>">
<td width=100><%=i++%></td>
<td width=500><%=m.getTitle()%></td>
<td width=100><%=m.getAuthor()%></td>
<td width=100><input type="button" onclick="sub(<%=i - 1%>)"
value="删除" /></td>
</tr>
<%
}
%>
</table>
在响应函数中,我用URL方式跳转到Servlet中,并将留言的序号传给Servlet,然后Servlet通过序号去数据库中删掉对应的一行:
function sub(num) {
window.location.href("drop_Message?num="+num);
}