javascript table插入與刪除 (已排好id, name也修改了)

  • 5089
  • 0
  • 2015-12-17

摘要: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

太好了,

今天晚上可以睡個好覺了~

(因為明天要做什麼也差不多知道了)