動態添加刪除table頁面一行input表格,tableinput

來源:互聯網
上載者:User

動態添加刪除table頁面一行input表格,tableinput


    之前寫過兩篇關於HTML頁面添加結點,刪除結點的博文。今天偶然看到一個網友詢問JSP頁面上動態給表格增加行,刪除行,碰巧那會兒比較閑,就動手寫了一下,記錄下來,希望能幫到需要的朋友們。


初始版本


<html><head><title>Table</title></head><body><table border="1"><thead><tr><td>First Name</td><td>Last Name</td><td> </td></tr><thead><tbody id="tb"><tr id="1st"><td>張</td><td>三</td><td><input type="button" value="Add" onclick="add()"> <input type="button" value="Del" onclick="del(this)"></td></tr></tbody></table></body></html><script>function add() {var trObj = document.createElement("tr");trObj.id = new Date().getTime();trObj.innerHTML = "<td><input name='firstName'/></td><td><input name='lastName'/></td><td><input type='button' value='Add' onclick='add()'> <input type='button' value='Del' onclick='del(this)'></td>";document.getElementById("tb").appendChild(trObj);}function del(obj) {var trId = obj.parentNode.parentNode.id;var trObj = document.getElementById(trId);document.getElementById("tb").removeChild(trObj);}</script> 

      上面的代碼中,首先在body中構造了一個table,為了方便後續的操作,我們給table添加了thead 和 tbody 標籤,thead標籤標示的是表格頭,tbody標籤標示的是表格主體。

      樣本中的表格,共有三列,第一列 first name,第二列 last name,第三列為操作列。

      操作列中,包含兩個操作,一個是給表格添加行,一個是刪除當前行。添加行和刪除行的操作分別綁在兩個按鈕上,點擊按鈕時,觸發相應的添加行/ 刪除行 操作。


添加行方法


function add() {var trObj = document.createElement("tr");trObj.id = new Date().getTime();trObj.innerHTML = "<td><input name='firstName'/></td><td><input name='lastName'/></td><td><input type='button' value='Add' onclick='add()'> <input type='button' value='Del' onclick='del(this)'></td>";document.getElementById("tb").appendChild(trObj);}

第一行,建立tr元素,即建立一個表格行。

第二行,trObj.id = new Date().getTime(); 給改行添加id 屬性,並給屬性賦值,取當前系統的毫秒數,這個主要是刪除的時候需要。

第三行,trObj.innerHTML = "<td><input name='firstName'/></td><td><input name='lastName'/></td><td><input type='button' value='Add' onclick='add()'>

<input type='button' value='Del' onclick='del(this)'></td>"; 給表格行賦值,通過innerHTMML屬性,設定<tr>標籤和</tr> 標籤間的html代碼內容,也就是要添加的行內容。

第四行,document.getElementById("tb").appendChild(trObj); 將建立好的表格行添加到表格主體中。


刪除行方法


function del(obj) {var trId = obj.parentNode.parentNode.id;var trObj = document.getElementById(trId);document.getElementById("tb").removeChild(trObj);}

刪除方法中傳遞了一個參數,在添加行方法中,我們可以看到刪除方法del 中傳遞了this參數,頁面代碼中的this指代的是當前的HTML元素,即this所在的<input >域。

第一行,var trId = obj.parentNode.parentNode.id; 擷取當前元素的父節點的父節點的id,即要刪除的行的id 。

第二行,var trObj = document.getElementById(trId); 擷取要刪除的行元素。

第三行,document.getElementById("tb").removeChild(trObj); 在表格主體中刪除該行。


瑕疵


上面的代碼基本實現了動態給表格增加行和刪除行的功能,但是代碼還有瑕疵,主要有這麼兩點:

1  表格在增加行前和增加行後,表格寬度發生變化

增加行前

增加行後

增加行後,表格列變寬了

2  瀏覽器預設開啟的頁面中文出現亂碼

需要 通過前面介紹過的設定編碼的方式 修改頁面編碼格式後才能正常顯示。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.