在jsp中动态生成的表格:
<c:set var="list" value="<%=list %>"></c:set>
<c:forEach items="${list}" var="v" >
  <tr>
  <td colspan="8">
  <form action="borrowServlet" method="post">
    <table  width="1000"  align="center" border="1" bordercolor="00BFFF">
      <tr>
       <td width="95">
      <c:out value="${v.bookName}"></c:out><input type="hidden" value="${v.bookName}" id="bookName">
       </td>
        <td width="95">
         ${v.bookAuthor }<input type="hidden" value="${v.bookAuthor }" id="bookAuthor">
       </td>
        <td width="99">
       ${v.bookPublisher}<input type="hidden" value="${v.bookPublisher}" id="bookPublisher">
       </td>
        <td width="100">
       ${v.bookTime } <input type="hidden" value="${v.bookTime } " id="bookTime">
       </td>
        <td width="105">
        ${v.bookIsbn }<input type="hidden" value=" ${v.bookIsbn }" id="bookIsbn ">
       </td>
        <td width="100">
       ${v.bookPrice }<input type="hidden" value="${v.bookPrice }" id="bookPrice ">
       </td>
        <td width="96">
       ${v.bookAmount }<input type="hidden" value="${v.bookAmount }" id="bookAmount">//书的数量
       </td>
        <td width="94">
       <input type="submit" value="借书" onclick="return borrowbook();">
       </td>
      </tr>
    </table>
  </form>
  </td>
  </tr>
</c:forEach>
我要对书的数量进行验证,当小于零的时候是不能借书的,
我的js如下:
function borrowbook()
{
 var bookAmount=document.getElementById("bookAmount").value;
 var intbookAmount=parseInt(bookAmount);
 if(intbookAmount==0)
 {
   alert("数量不足");
   return false;
 }
   return true;
}
但是这样是不行的,它获取的数量永远是第一行的。怎么回事啊?

解决方案 »

  1.   

    基础概念问题
    在一个页面里面,ID属性是唯一的,如果你重复定义了ID相同的表单,那么只有第一个的ID有效。
    你这种情况应该用name
    然后用document.getElementsByName("bookAmount")[rowIndex].value; 
    其中rowIndex是你点击的那一行的row的索引。
    可以在tr上面写一个onclick事件 onclick="borrowbook(this)"
    function borrowbook(o){
    var bookAmount=document.getElementsByName("bookAmount")[o.rowIndex].value; 
    var intbookAmount=parseInt(bookAmount); 
    if(intbookAmount==0) 

      alert("数量不足"); 
      return false; 

      return true; 
    }
      

  2.   

    <input type="hidden" value="${v.bookAmount }" id="">给id一个标识如bookAmount_0,bookAmount_1
    借那本书的时候判断那本书的数量 
      

  3.   

    1楼的方法,我试了,怎么不行啊~那个rowIndex不是很理解,它自己可以确定是哪一行吗?还有,我每行是分别放在各自的form里的,当onclick得时候,它不应该是只对提交的那个form里的文本框做判断吗?
      

  4.   

    从标准上来说,你循环插入ID为bookAmount的对象是不好的.
    可以不用ID, 把你的ID改为NAME ..<input type="hidden" value="${v.bookAmount }" name="bookAmount">借书的按钮: <input type="submit" value="借书" onclick="return borrowbook(this.form);"> 把这一行的表单对象传入判断的时候就用
    function borrowbook(form) { 
        var bookAmount=form['bookAmount '].value;
    ......