<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift-js">
<title>The page of append rows to Table</title>
<script language="JavaScript">
// 新增行
function addRow(){
var textNum = document.getElementById("rownum");
// 得到新增行記錄的行數
var index = textNum.value;
if(!checknum(index)){
alert("You can only input number in the TEXT!");
textNum.focus();
textNum.select();
}
for(var i = 0; i < index; i++){
// 得到表格對象
var tableObj = document.getElementById("mainTb");
// 得到tbody對象
var tableBodyObj = document.getElementById("mainBody");
var newRowObj = document.createElement("tr");
var newCheckBox = document.createElement("td");
var newtext1 = document.createElement("td");
var newtext2 = document.createElement("td");
var newtext3 = document.createElement("td");
newCheckBox.innerHTML = '<center><input type="Checkbox" name="checkbox" onclick = "checkBoxSel()"></center>';
newtext1.innerHTML = '<input type="text" name="newCarName" size="9">';
newtext2.innerHTML = '<input type="text" name="newCarName" size="9">';
newtext3.innerHTML = '<input type="text" name="newCarName" size="9">';
// 新增的tr節點下增加td節點
newRowObj.appendChild(newCheckBox);
newRowObj.appendChild(newtext1);
newRowObj.appendChild(newtext2);
newRowObj.appendChild(newtext3);
// tbody節點下增加tr節點
tableBodyObj.appendChild(newRowObj);
}
}
// 新增行數選擇框檢查輸入必須是數字
function checknum(strVal){
if (strVal.length != 0){
var r = strVal.match(new RegExp(/^[0-9]+$/));
if (r == null){
return false;
}else{
return true;
}
}
return true;
}
// 大量刪除指定的行
function deleteRow(){
var Tblen;
// 得到所有 checkbox 對象
var checkbox = document.getElementsByName("checkbox");
//var checkboxlen = document.all.checkbox.length;
// 得到所有提交的checkbox個數
var checkboxlen = checkbox.length;
var ischecked;
// 得到刪除按鈕對象
var delbutton = document.getElementById("delete");
for (var i=0; i < checkboxlen; i++){
// 得到表格行數
Tblen = this.mainTb.rows.length;
// 最終保留一行記錄
if (Tblen == 1)
{
document.getElementsByName("checkbox")[0].checked = false;
alert("A line have to be saved in the ID of mainTb!");
// 刪除按鈕不可用
delbutton.disabled = true;
return false;
}
ischecked = checkbox[i].checked;
// 如果當前的checkbox選中:刪除當前節點,由於刪除節點後,下面的節點上移,遊標(記錄行指標)也應該上移
if (ischecked)
{
// document.all("mainTb").deleteRow(i);
document.getElementById("mainTb").deleteRow(i);
// 遊標(記錄行指標)上移
i--;
}
// 重新統計checkbox個數
checkboxlen = checkbox.length;
}
// 刪除操作後按鈕狀態是不可用
delbutton.disabled = true;
}
// checkbox按鈕單擊事件處理函數:是否至少選中一行記錄,是可以刪除操作;如果沒有選擇,刪除按鈕不可用
function checkBoxSel(){
// 得到刪除按鈕對象
var delbutton = document.getElementById("delete");
if(checkselect()){
delbutton.disabled = false;
}else{
delbutton.disabled = true;
}
}
function checkselect(){
// 得到所有 checkbox 對象
var checkbox = document.getElementsByName("checkbox");
// 得到所有提交的checkbox個數
var chklength = checkbox.length;
var flag = false;
for(var i = 0; i < chklength; i++)
{
if(checkbox[i].checked == true)
{
flag = true;
break;
}
}
if(flag == true)
{
return true;
} else {
return false;
}
}
// 頁面載入body內容時執行
function loadpage(){
var delbutton = document.getElementById("delete");
var rownum = document.getElementById("rownum");
// 初始“刪除”按鈕不可用
delbutton.disabled = true;
// 初始行數輸入框內容為空白
rownum.value = "";
}
</script>
動態添加、刪除行,分別通過insertRow,deleteRow方法實現,顯示行號,通過rowIndex屬性獲得,基本可以動態實現相關功能。
<Script Language="Javascript">
var cGetRow=-99999;
var lineNo = 1;
function _(id) {
return document.getElementById(id);
}
// The index of the row to be deleted.
// This index starts from 0 and is relative to the logical order (not document order)
// of all the rows contained inside the table.
// If the index is -1 the last row in the table is deleted.
function AddRow(){
//添加一行
var newTr = _("tab1").insertRow();
//添加兩列
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
//設定列內容和屬性
newTd0.innerHTML = '<input type=checkbox id="box' + lineNo + '" onClick="GetRow()">';
// 測試動態改變innerHTML中的checkbox的id
alert(_("box" + lineNo).id);
newTd1.innerText= '新增加行' + lineNo;
lineNo++;
}
function DelRow(iIndex){
//刪除一行
if(iIndex==-99999){
alert("系統提示:沒有選中行號!");
}else{
iIndex = cGetRow;
_("tab1").deleteRow(iIndex);
}
}
function GetRow(){
//獲得行索引
//兩個parentElement分別是TD和TR喲,rowIndex是TR的屬性
//this.parentElement.parentElement.rowIndex
cGetRow=window.event.srcElement.parentElement.parentElement.rowIndex;
}
function ShowRow(){
//顯示行號
alert(cGetRow);
//alert(document.getElementsByTagName("tr").length);
}
</script>