利用js为table添加行

       前几天在项目中,用到了一些前端的小技巧,一个是我现在要写的,还有一个就是三个select的联动。我写这篇博客的目的是:1.供自己以后随时查阅用 2.希望对他人也有所帮助,因为总有还不会的。  这个话题虽然网上也有人写过。但我争取把这篇博客写的更详细些。

       先来个效果图:我最终想实现的就是当点击添加时,table当前最后一行下面添加新的一行。

      

       这个其实还满简单的,主要会用到js中的一些操纵table的tr和td的方法,但第一次用的人往往会遇到一些小问题。所以请看代码~

       HTML代码:

 1 <body>
 2     <div class="DIVoverflow">
 3         <table width="100%">
 4             <tr>
 5                 <td align="right">
 6                     <input type="button" value="添加" class="button_add" onclick="javascript:addRow()">
 7                 </td>
 8             </tr>
 9             <tr>
10                 <td align="center">
11                     <table id="list_table" cellpadding="0" cellspacing="0" width="100%" style="border:1px solid #9AC0CD;" class="">
12                             <tr style="background-color: #f7f7f7">
13                                     <th>序号</th>
14                                     <th>处理时限</th>
15                                     <th>相关要求</th>
16                                     <th>责任人</th>
17                             </tr>
18                             <!-- <c:forEach items="${event.limitList}" var="limit" varStatus="status">
19                                     <tr>
20                                     <td>${status.count}</td>
21                                     <td><input name='limit_time' value='<fmt:formatDate pattern="yyyy-MM-dd" value="${limit.limit_time}"/>' type='text' class='Wdate' onfocus='WdatePicker()' style='width: 100px'/></td>
22                                     <td><input name='limit' value='${limit.limit}' class='input_M'/></td>
23                                     <td><select name='fk_user_id' class='select_S'> 
24                                             <option value=''>请选择...</option>
25                                             <c:forEach items='${userList}' var='user'>
26                                                     <option value='${user.id}' <c:if test="${user.id eq limit.fk_user_id}">selected</c:if>>${user.loginName}</option>
27                                             </c:forEach></select></td>
28                                     </tr>
29                             </c:forEach> -->
30                     </table>
31                 </td>
32             </tr>
33         </table>
34     </div>
35 </body>    

        在这段代码中,我定义了了一个添加按钮和一个带表头的table。并且为添加按钮添加了一个click事件响应:addRow()函数。 
        JS代码:

 

 1 <script type="text/javascript">
 2         function addRow() {
 3             //原来的行数    比如:此处获得表格的行数是5,则每一行对应的index是0~4,所以下面在insertRow时,使用的是表格的当前行数
 4             var currentRows = document.getElementById("list_table").rows.length; 
 5             var insertTr = document.getElementById("list_table").insertRow(currentRows);
 6             var insertTd = insertTr.insertCell(0);
 7             insertTd.style.textAlign="center";
 8             insertTd.innerHTML = currentRows;
 9             
10             insertTd = insertTr.insertCell(1);
11             insertTd.style.textAlign="center";
12             insertTd.innerHTML = "<input name='limit_time' value='' type='text' class='Wdate' onfocus='WdatePicker()' style='width: 100px'/>";
13             
14             insertTd = insertTr.insertCell(2);
15             insertTd.style.textAlign="center";
16             insertTd.innerHTML = "<input id='limit"+currentRows+"' name='limit' value='' class='input_M'/>";
17             
18             insertTd = insertTr.insertCell(3);
19             insertTd.style.textAlign="center";
20             insertTd.innerHTML = "<select id='user"+currentRows+"' name='fk_user_id' class='select_S'>"+ 
21             "<option value=''>请选择...</option>" +
22             "<c:forEach items='${userList}' var='user'>" +
23             "<option value='${user.id}'>${user.loginName}</option>" +
24             "</c:forEach></select>" ;
25         }
26     </script>

 

        结合上面的js的代码,我们可以看出:
        1.先利用getElementById获得table。之后访问它的rows的属性,最终获得length的长度。对于这个长度的使用,我在上面代码的注释中已经写明!

        2.我们利用insertRow()这个js方法在最下面插入新的一行tr。

        3.我们利用insertCell插入四个td,对应表的四列。

        4.访问每个td的innerHTML属性,我给第一个td中添加的是序号,第二个td中添加的是一个日期控件,第三个td添加的是一个文本框,第四个td添加的是一个select。

         其实感觉也没什么好说的了。。。。你运行一遍就什么都明白了,附上效果图:

         

            PS:我们用的这个日期控件是js编写的,我刚才简单试了下,ie下没问题,chrome下失效了,需要的话所以你可以替代为文本框。

            源代码:https://files.cnblogs.com/PurpleDream/%E8%A1%A8%E6%A0%BC%E6%B7%BB%E5%8A%A0%E8%A1%8C.rar

 

 

 

 

      

posted on 2013-04-17 16:55  Sky_YiBai  阅读(11079)  评论(0编辑  收藏  举报