大家帮忙看看这个页面其中的删除链接,点击删除的时候,我是通过隐藏变量把要删除的数据的ID传给JS,然后JS通过location调用action并把ID传过去,可是为什么JS获取的ID的值是undefined呢?还有如果我把 <input type="hidden" name="userid" value="<%=userid%>"> 这个放在for循环外面的话就可以正常获取了
可是如果这么放的话,取的userid的值就是ArrayList最后一个数据的ID值了。
<%@page contentType="text/html;charset=GBK" import="userInfo.UserInfo"%>
<%@page import="java.util.ArrayList" %>
<html>
  <head>    
    <title>帖子列表</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="CSS/index.css">  <script language="javascript">
        function del(){
        var userid=document.all.userid.value;
        if(window.confirm("确定要删除该用户吗?")){
        window.location.href="managerDel.action?id="+userid;
        }
       }   
  </script>
  </head>
  <body>
  <div id="container">
    <div id="header"></div>
<div id="mainbox">
<div id="left"> 
        <br>
<h2><center>管理员</center></h2>
<br>
        <br>
        <br>
<li><center><a href="http://localhost:8080/BBS/index.html">返回首页</a></center></li>
</div>
    <div id="middle">
    <h2 align=center>用户信息列表</h2>
<table border=1 class="default" align="center">
<tr><td class="item" width=200>用户名</td><td class="item" width=200>用户密码</td>
        <td class="item" width=200>用户昵称</td><td class="item" width=200>用户性别</td>
        <td class="item" width=200>修改用户</td><td class="item" width=200>删除用户</td>
    </tr> 
    <%   
         ArrayList<UserInfo> list=(ArrayList<UserInfo>)request.getAttribute("list");
         String userid=null;
         for(UserInfo ui:list){ 
                userid=ui.getUserid();
    %>
       <tr>
       <td class="item" align="center"><%=ui.getUsername() %></td>
       <td class="item" align="center"><%=ui.getPassword() %></td>
       <td class="item" align="center"><%=ui.getNickname() %></td>
       <td class="item" align="center"><%=ui.getSex() %></a></td>
       <td class="item" align="center"><a href="managerEdit.action?id=<%=userid%>">修改</a></td>
       <input type="hidden" name="userid" value="<%=userid%>"> 
       <td class="item" align="center"><a href="JavaScript:del()">删除</a></td>
       </tr>
    <%
       }
    %>
    </table>
</div>
    <div id="right">
    <p><img src="PIC/right1.jpg"></p>
<p><img src="PIC/right2.jpg"></p>
<p><img src="PIC/right3.jpg"></p>
</div>
</div>
   </div>
  </body>
</html>

解决方案 »

  1.   

    给input价格属性id,用document.getElementByID()去得可能更好点
      

  2.   

    <a href="JavaScript:del()">删除</a>,完全可以直接传userid嘛
    <a href="JavaScript:del(<%=userid%>)">删除</a>,在js的这个function里加个参数
      

  3.   

     <td class="item" align="center"><a href="JavaScript:del('<%=ui.getUserid()%>')">  
    ')">删除</a></td>
    function del(uid){
        alert(uid);
     }
    我喜欢这样做,你这样试试。<input type="hidden" name="userid" value="<%=userid%>">  
    不知道你为什么上面在定义一个变量接收userid,感觉多余,直接<%=ui.getUserid()%>不是一样吗
      

  4.   

    你的实现思路有问题
    多个用户你循环出多个隐藏域,然后name都是userid,你好好想想
    var userid=document.all.userid.value;
    这样会得到哪个用户的ID呢?
      

  5.   


    不需要隐藏域这么麻烦啊!,直接把userid传到del方法中就行了。<td class="item" align="center"><a href="JavaScript:del(<%=userid%>)">删除</a></td>js的del方法多加一个参数就行了。 <script language="javascript">
      function del(userid){
      if(window.confirm("确定要删除该用户吗?")){
      window.location.href="managerDel.action?id="+userid;
      }
      }   
      </script>