摘要:javascript 插入新table與刪除
我是參考這篇的:
http://blog.hsin.tw/2008/javascript-table-add-remove-row/
好不容易以為可以交差,沒想到,
我的RD希望我能夠隨便插入(類似資料庫那樣),
於是我折騰了好一番功夫,
終於把這東西完成啦!!!!!!
用法如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>table test</title>
</head>
<script type="text/javascript">
function addCamera(obj)
{
var idis=obj.id;
var line=idis.split("add");
var lines=parseInt(line[1]);
//modify id, first
var tc=document.getElementById("tbCamera").rows.length;
var idArray=new Array(tc);
for(var i=0;i<tc;i++)
{
idArray[i]="add"+i;
}
//the id below the added should modify before add, if add 2, then 2,3,4 will be 3,4,5
if((lines+2)==tc)
{
//add to last
var last=(lines+1);
if(lines==0)
{
var Tr = document.getElementById("tbCamera").insertRow((lines-1));
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="camera'+last+'" type="text" id="camera'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="number'+last+'" type="text" id="number'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="name'+last+'" type="text" id="name'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="add'+last+'" name="add'+last+'" value="加入" onclick="addCamera(this)">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="del'+last+'" name="del'+last+'" value="刪除" onclick="delCamera(this)">';
}
else
{
var Tr = document.getElementById("tbCamera").insertRow(-1);
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="camera'+last+'" type="text" id="camera'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="number'+last+'" type="text" id="number'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="name'+last+'" type="text" id="name'+last+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="add'+last+'" name="add'+last+'" value="加入" onclick="addCamera(this)">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="del'+last+'" name="del'+last+'" value="刪除" onclick="delCamera(this)">';
}
}
else
{
var tableCount=(tc-2);
for(var j=tableCount;j>lines;j--)
{
var idCamera="camera"+j;
var idNum="number"+j;
var idName="name"+j;
var idAdd="add"+j;
var idDel="del"+j;
var addone=(j+1);
document.getElementById(idCamera).id="camera"+addone;
document.getElementById(idNum).id="number"+addone;
document.getElementById(idName).id="name"+addone;
document.getElementById(idAdd).id="add"+addone;
document.getElementById(idDel).id="del"+addone;
}
var addLine=(lines+1);
var Tr = document.getElementById("tbCamera").insertRow((addLine+1));
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="camera'+addLine+'" type="text" id="camera'+addLine+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="number'+addLine+'" type="text" id="number'+addLine+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input name="name'+addLine+'" type="text" id="name'+addLine+'">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="add'+addLine+'" name="add'+addLine+'" value="加入" onclick="addCamera(this)">';
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="button" id="del'+addLine+'" name="del'+addLine+'" value="刪除" onclick="delCamera(this)">';
}
}
function delCamera(obj)
{
var idis=obj.id;
var line=idis.split("del");
var lines=parseInt(line[1]);
var tc=document.getElementById("tbCamera").rows.length;
if(lines>=1)
{
var delis=(lines+1);
if(delis>=tc)
{
document.getElementById("tbCamera").deleteRow(-1);
}
else
{
document.getElementById("tbCamera").deleteRow(delis);
}
}
}
</script>
<body>
<div align="center">
<table width="594" border="0" id="tbCamera">
<tr>
<td width="181" align="center" bgcolor="#0066FF"><span class="style14">カメラMAC</span></td>
<td width="222" align="center" bgcolor="#0066FF"><span class="style14">型番</span></td>
<td width="177" align="center" bgcolor="#0066FF"><span class="style14">カメラ名</span></td>
</tr>
<tr>
<td align="center" bgcolor="#BFBFFF"><div align="center">
<input name="camera1" type="text" id="camera1" />
</div></td>
<td align="center" bgcolor="#BFBFFF"><div align="center">
<input name="number1" type="text" id="number1" />
</div></td>
<td align="center" bgcolor="#BFBFFF"><div align="center">
<input name="name1" type="text" id="name1" />
</div></td>
<td><input type="button" id="add0" value="加入" name="add0" onclick="addCamera(this)"/></td>
<td> </td>
</tr>
</table>
</div>
</body>
</html>
插入的技巧就在於要修改之後的id(先+1)。
這樣才會把所有的往下移動。
因此你點到哪一列就是哪個id喔!
(id已經排好了)
要是你不確定到底是差在後面還是前面,
可以把輸入框輸入0~N。
SV是加在後面,所以如果是0123,那麼點2就會變成012_3,_就是被加入的位置。
好處就是因為id已經排好了,id是照順序的,
所以如果你想對某一行做改變或變化,就可以用document.getElementById(id)去做事情囉~
p.s.因為SV不太會命標題,如果看到、路過的可以告訴我更專業更好的,幫忙留個言告訴我喔~
這樣就不會誤導人了XDDDD
話說回來消消樂的遊戲在國外應該有什麼特定名詞(就是三個就消掉)......
到底叫什麼呢?
新增:
如果連name也要吹毛求疵,
那麼連name也要修改。而SV就碰上這個麻煩了Orz
聽說是在function add(obj)裡用obj.name="你要的名字";
不過聽說遇到IE還是火狐就會有bug......
好在SV的工作只需要用IE(因為不是每個人都有火狐),所以針對IE解決就好XDDDD
一樣是同樣的把後面的先改掉name+1再把name補上去。
也就是跟id一起跑迴圈就對啦!
新增2:
抱歉,SV又老馬了~
應該是document.getElementById("你的id").name="你要的名";
所以只要把部分程式改成:
var tableCount=(tc-2);
for(var j=tableCount;j>0;j--)
{
var idCamera="camera"+j;
var idNum="number"+j;
var idName="name"+j;
var idAdd="add"+j;
var idDel="del"+j;
var addone=(j+1);
document.getElementById(idCamera).id="camera"+addone;
document.getElementById(idNum).id="number"+addone;
document.getElementById(idName).id="name"+addone;
document.getElementById(idAdd).id="add"+addone;
document.getElementById(idDel).id="del"+addone;
document.getElementById(idCamera).name="camera"+addone;
document.getElementById(idNum).name="number"+addone;
document.getElementById(idName).name="name"+addone;
document.getElementById(idAdd).name="add"+addone;
document.getElementById(idDel).name="del"+addone;
}
就可以囉~只是SV的id和name一樣名字,偷吃步XDDDD
再次修改:
看了這篇我就心碎了
http://www.jb51.net/article/24699.htm
所以修改name的替代方案我還在搜尋中~"~
真的很麻煩呀~
很好,我終於明白為什麼不行了~
因為我先修改id,name自然找不到它的id在哪裡~
所以uhoo~
改成這樣就ok了!!!!
var tableCount=(tc-2);
for(var j=tableCount;j>lines;j--)
{
var idCamera="camera"+j;
var idNum="number"+j;
var idName="name"+j;
var idAdd="add"+j;
var idDel="del"+j;
var addone=(j+1);
document.getElementById(idCamera).name="camera"+addone;
document.getElementById(idNum).name="number"+addone;
document.getElementById(idName).name="name"+addone;
document.getElementById(idAdd).name="add"+addone;
document.getElementById(idDel).name="del"+addone;
document.getElementById(idCamera).id="camera"+addone;
document.getElementById(idNum).id="number"+addone;
document.getElementById(idName).id="name"+addone;
document.getElementById(idAdd).id="add"+addone;
document.getElementById(idDel).id="del"+addone;
}
為什麼要修改name呢?
因為php的post需要用到name呀Orz
太好了,
今天晚上可以睡個好覺了~
(因為明天要做什麼也差不多知道了)