js實現動態刪除表格的行或者列-------Day57

來源:互聯網
上載者:User

昨天記錄了動態添加表格的一行,當然這個一行是指一行資料,也就是說一行多少列也是加上的,並且第幾列的內容都可以添加上,先來回顧下它的實現的關鍵點:

1、var row=table.insertRow();添加一行;

2、var cell1=row.insertCell();添加一個單元格;(如果在後面繼續寫var cell2=row.insertCell()的話,就是添加第二列;)

3、cell1.innerHTML="第一列的內容";向第一個單元格中填充值



以上就是昨天記錄的動態添加一行的全部了,當然能夠添加就能刪除,而今天來記錄的就是動態刪除,刪除一行,刪除一列。首先看刪除一行:

我們先來看存在的表格:


這樣,現在存在一個四行兩列的表格,我們先來實現刪除某指定一行:假定我們需要刪除第三行,我們該怎麼寫呢?

這樣來看一下代碼:在html代碼中,在delRow按鈕上添加方法onclick="c()";

function c(){var table=document.getElementById("tad");var len=table.rows.length;table.deleteRow(len-2);//這裡刪除的是倒數第二行,也就是第三行}
這樣我們來運行下,結果顯示為:

這樣,第三行就被刪除了,由此我們可以得知,刪除一行的方法為deleteRow(index),index為參數,表示第幾行,這個參數時從上向下,由0開始數的,另外有特別需要注意的一點:如果參數不寫,則效果與參數為0一樣,表示刪除最上面一行

這樣實現刪除所有行是不是就有思路了,這樣我們來寫下代碼:

function c(){var table=document.getElementById("tad");var len=table.rows.length;for(var i=0;i<len;i++){    table.deleteRow();//也可以寫成table.deleteRow(0);}}
這樣我們來看下結果:


就只剩下table的外殼了,裡面的內容全都不見了,原理我們懂了,代碼我們也實現了,但是在實現過程中有幾點我們需要注意:

1、在迴圈中我們是首先擷取的固定值,var len=table.rows.length;然後i<len,而不是直接寫i<table.rows.length;

想必大家都明白其中的原因,刪除一行之後,在進入第二次迴圈的時候,表格已經變動了,則table.rows.length也改變了,然而i也增大了,等到table.row.length<=i的時候行並沒有全部刪光,在這個例子中的話應該是i=2的時候table.rows.length也等於2了,則就不再進行刪除了,所以會餘下兩行,解決的辦法之一,當然就是按我寫這樣,另一種也可以把i++去掉,知道len=0的時候停止也可以,但是理解起來有點麻煩了就

2、在迴圈中我們寫的是table.deleteRow()或者table.deleteRow(0),而不是table.deleteRow(i),跟1中的原因一樣的哦



接下來我們再來記錄下刪除列,如果說行是deleteRow()的話,列該怎麼寫呢,這裡沒有cols的事情,事實上就是之前添加的單元格啊,將每一行的同一列上的單元格全部刪除掉不就等同於刪除了一列麼,刪除單元格的方法同樣跟添加是對應的deleteCell();

這樣如果說只刪除固定列,怎麼寫也就呼之欲出了吧,繼續就上面的表格進行操作,刪除第三行第二列,我們來寫下實現代碼:

function d(){var table=document.getElementById("tad");table.rows[2].deleteCell(1);}

這個結果太明顯了吧,那樣所有列都刪除也就容易多了,來繼續實現下代碼:

function d(){var table=document.getElementById("tad");for(var i=0;i<table.rows.length;i++){table.rows[i].deleteCell(1);}}

這個結果也就隨之而來了,這樣我們就實現了動態刪除行和列,我們再來總結下:

1、刪除行的方法:deleteRow();添加行則是insertRow();

2、刪除列,即是刪除單元格,方法為:deleteCell();而添加列則是insertCell()



最近工作碰到了個小問題,uml時序圖一直沒法徹底理解了呢,看起來挺簡單的,可就繞不出那個彎了,加油啊...






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.