初學js---動態生成表格

動態生成表格並封裝函數:javascript

1.動態建立表頭css

  *經過createElement('table')建立一個表格標籤——>經過createElement('thead')建立表頭——>經過table.appendChild(thead')將表頭包含到表格中;html

    **一樣的方法建立tr並將tr放到thead中java

      ***再將表頭數據依次放到表頭:經過app

將表頭數據放到表頭(theadData爲表頭的數據,函數的參數item爲數據內容)函數

  將建立表頭的方法封裝成函數function creatHead(parent,headData)()這裏的parent爲裝table的容器this

2.動態建立tbodyspa

    *經過createElement(‘tbody’)建立tbody並將其放到table中——>一樣方法將數據放到tbody中code

      **將建立tbody的方法封裝成函數function creatBody(table,bodyData)(){}htm

3.進行刪除操做

  *給每一行tr再追加一個td用來放刪除的操做,這裏放了一個a標籤,注意要給a標籤設置href:javaScript:void(0),使a標籤點擊後不跳轉

    **因爲刪除操做是比較嚴肅的,在刪除以前要給一個彈框肯定是否刪除,當肯定要刪除後從tbody中刪除對應的tr

4.調用函數動態建立表格

  *因爲生成表頭和tbody的方法都進行了函數封裝,如今只要再建立將生成表頭和tbody的函數放在一塊兒的生成完整表格的函數便可

 

   **使用時調用封裝函數就能夠了

 

完整代碼:

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>動態封裝表格</title>
<style type="text/css">
#box table{
border-collapse: collapse; /*當有兩條邊框線時,只顯示一條邊框線*/
}
</style>
</head>
<body>
<div id="box">

</div>
<script type="text/javascript">
//表中的數據項
var bodyData=[
{name:"黃文傑",subject:"語文",scoer:"90"},
{name:"張曉梅",subject:"化學",scoer:"96"},
{name:"李傑凱",subject:"英語",scoer:"80"},
{name:"易夢雲",subject:"數學",scoer:"99"},
{name:"王小青",subject:"物理",scoer:"70"},
];
//定義表頭內容
var headData=['姓名','科目','成績','操做'];
var box=document.getElementById('box');

//調用建立表格的函數
creatTable(box,headData,bodyData);
//定義建立表格的函數
function creatTable(parent,headData,bodyData){
var table=creatHead(parent,headData);    //調用建立表頭的函數
creatBody(table,bodyData);    //調用建立數據項的函數

}
//定義建立表頭的函數
function creatHead(parent,headData){
//動態生成table標籤
var table=document.createElement('table');
//將table標籤寫入box的div中
parent.appendChild(table);
table.border='1px';
table.width='500px';
table.cellSpacing=0;
//動態生成表頭中的thead標籤
var thead=document.createElement('thead');
//將thead標籤寫入table
table.appendChild(thead);
//動態生成tr標籤
var tr=document.createElement('tr');
//將tr標籤寫入thead標籤
thead.appendChild(tr);
tr.style.height='35px';
tr.style.background='lightgray';
//表頭遍歷
headData.forEach(function(item){
//動態生成th標籤
var th=document.createElement('th');
//將th標籤寫入th
tr.appendChild(th);
//將表頭數據寫入th中
th.innerHTML=item;
})
return table;
}

function creatBody(table,bodyData){
/*設置數據行*/
var tbody=document.createElement('tbody');
table.appendChild(tbody);
//遍歷數據
bodyData.forEach(function(item){
tr=document.createElement('tr');
tbody.appendChild(tr);
for(var key in item){    //將item這個對象的每個屬性賦給key
var td=document.createElement('td');
tr.appendChild(td);
td.innerHTML=item[key];

}
/*操做的列*/
var td=document.createElement('td');
tr.appendChild(td);
var link=document.createElement('a');
link.href='javaScript:void(0)';
td.appendChild(link);
link.innerHTML='刪除';

/*刪除操做*/
link.onclick=linkclick;

})
function linkclick(){
//提示用戶是否刪除
var r=confirm('是否確認刪除');
if(r){
//刪除
//獲取點擊
var tr=this.parentNode.parentNode;
tbody.removeChild(tr);
}
}

};

</script>
</body>
</html>
相關文章
相關標籤/搜索